Full Code of trufflesecurity/trufflehog for AI

main afd5336caad0 cached
3357 files
15.6 MB
4.1M tokens
17440 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (16,408K chars total). Download the full file to get everything.
Repository: trufflesecurity/trufflehog
Branch: main
Commit: afd5336caad0
Files: 3357
Total size: 15.6 MB

Directory structure:
gitextract_ieqdewfm/

├── .captain/
│   └── config.yaml
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── community_note.md
│   ├── renovate.json
│   └── workflows/
│       ├── README.md
│       ├── TESTING.md
│       ├── codeql-analysis.yml
│       ├── detector-tests.yml
│       ├── lint.yml
│       ├── performance.yml
│       ├── release-guard.yml
│       ├── release.yml
│       ├── secrets.yml
│       ├── smoke.yml
│       └── test.yml
├── .gitignore
├── .goreleaser.yml
├── .pre-commit-config.yaml
├── .pre-commit-hooks.yaml
├── CODEOWNERS
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Dockerfile
├── Dockerfile.goreleaser
├── LICENSE
├── Makefile
├── PreCommit.md
├── README.md
├── SECURITY.md
├── action.yml
├── docs/
│   ├── concurrency.md
│   ├── iterative_decoding_performance.md
│   └── process_flow.md
├── entrypoint.sh
├── examples/
│   ├── README.md
│   ├── generic.yml
│   └── generic_with_filters.yml
├── go.mod
├── go.sum
├── hack/
│   ├── Dockerfile.protos
│   ├── bench/
│   │   ├── plot.gp
│   │   ├── plot.sh
│   │   ├── plot.txt
│   │   └── versions.sh
│   ├── docs/
│   │   ├── Adding_Detectors_Internal.md
│   │   └── Adding_Detectors_external.md
│   ├── generate/
│   │   ├── generate.go
│   │   └── test.sh
│   ├── semgrep-rules/
│   │   └── detectors.yaml
│   └── snifftest/
│       ├── README.md
│       ├── main.go
│       └── snifftest.sh
├── main.go
├── pkg/
│   ├── analyzer/
│   │   ├── README.md
│   │   ├── analyzers/
│   │   │   ├── airbrake/
│   │   │   │   ├── airbrake.go
│   │   │   │   └── scopes.go
│   │   │   ├── airtable/
│   │   │   │   ├── airtableoauth/
│   │   │   │   │   ├── airtable.go
│   │   │   │   │   ├── airtable_test.go
│   │   │   │   │   └── expected_output.json
│   │   │   │   ├── airtablepat/
│   │   │   │   │   ├── airtable.go
│   │   │   │   │   ├── airtable_test.go
│   │   │   │   │   ├── expected_output.json
│   │   │   │   │   └── requests.go
│   │   │   │   └── common/
│   │   │   │       ├── common.go
│   │   │   │       ├── endpoints.go
│   │   │   │       ├── models.go
│   │   │   │       ├── permissions.go
│   │   │   │       ├── permissions.yaml
│   │   │   │       └── scopes.go
│   │   │   ├── analyzers.go
│   │   │   ├── anthropic/
│   │   │   │   ├── anthropic.go
│   │   │   │   ├── anthropic_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── requests.go
│   │   │   │   └── result_output.json
│   │   │   ├── asana/
│   │   │   │   ├── asana.go
│   │   │   │   ├── asana_test.go
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── permissions.go
│   │   │   │   └── permissions.yaml
│   │   │   ├── bitbucket/
│   │   │   │   ├── bitbucket.go
│   │   │   │   ├── bitbucket_test.go
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   └── scopes.go
│   │   │   ├── client.go
│   │   │   ├── client_test.go
│   │   │   ├── databricks/
│   │   │   │   ├── databricks.go
│   │   │   │   ├── databricks_test.go
│   │   │   │   ├── models.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── requests.go
│   │   │   │   └── result_output.json
│   │   │   ├── datadog/
│   │   │   │   ├── datadog.go
│   │   │   │   ├── datadog_test.go
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── expected_output_apikey.json
│   │   │   │   ├── models.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── requests.go
│   │   │   │   └── scopes.json
│   │   │   ├── digitalocean/
│   │   │   │   ├── digitalocean.go
│   │   │   │   ├── digitalocean_test.go
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   └── scopes.json
│   │   │   ├── dockerhub/
│   │   │   │   ├── dockerhub.go
│   │   │   │   ├── dockerhub_test.go
│   │   │   │   ├── helper.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── requests.go
│   │   │   │   └── result_output.json
│   │   │   ├── dropbox/
│   │   │   │   ├── dropbox.go
│   │   │   │   ├── dropbox_test.go
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── models.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   └── scopes.json
│   │   │   ├── elevenlabs/
│   │   │   │   ├── elevenlabs.go
│   │   │   │   ├── elevenlabs_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── requests.go
│   │   │   │   └── result_output.json
│   │   │   ├── fastly/
│   │   │   │   ├── fastly.go
│   │   │   │   ├── fastly_test.go
│   │   │   │   ├── models.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── requests.go
│   │   │   │   └── result_output.json
│   │   │   ├── figma/
│   │   │   │   ├── endpoints.json
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── figma.go
│   │   │   │   ├── figma_test.go
│   │   │   │   ├── models.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── requests.go
│   │   │   │   └── scopes.go
│   │   │   ├── github/
│   │   │   │   ├── classic/
│   │   │   │   │   ├── classic.yaml
│   │   │   │   │   ├── classic_permissions.go
│   │   │   │   │   └── classictoken.go
│   │   │   │   ├── common/
│   │   │   │   │   └── github.go
│   │   │   │   ├── finegrained/
│   │   │   │   │   ├── finegrained.go
│   │   │   │   │   ├── finegrained.yaml
│   │   │   │   │   ├── finegrained_permissions.go
│   │   │   │   │   └── finegrained_test.go
│   │   │   │   ├── github.go
│   │   │   │   └── github_test.go
│   │   │   ├── gitlab/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── gitlab.go
│   │   │   │   ├── gitlab_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   └── scopes.go
│   │   │   ├── groq/
│   │   │   │   ├── groq.go
│   │   │   │   ├── groq_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   └── requests.go
│   │   │   ├── huggingface/
│   │   │   │   ├── huggingface.go
│   │   │   │   ├── huggingface_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   └── scopes.go
│   │   │   ├── jira/
│   │   │   │   ├── jira.go
│   │   │   │   ├── jira_test.go
│   │   │   │   ├── models.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── requests.go
│   │   │   │   └── result_output.json
│   │   │   ├── launchdarkly/
│   │   │   │   ├── launchdarkly.go
│   │   │   │   ├── launchdarkly_test.go
│   │   │   │   ├── models.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── requests.go
│   │   │   │   ├── result_output.json
│   │   │   │   └── user.go
│   │   │   ├── mailchimp/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── mailchimp.go
│   │   │   │   ├── mailchimp_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   └── permissions.yaml
│   │   │   ├── mailgun/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── mailgun.go
│   │   │   │   ├── mailgun_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   └── requests.go
│   │   │   ├── monday/
│   │   │   │   ├── monday.go
│   │   │   │   ├── monday_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── query.go
│   │   │   │   ├── query.graphql
│   │   │   │   └── result_output.json
│   │   │   ├── mux/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── models.go
│   │   │   │   ├── mux.go
│   │   │   │   ├── mux_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── requests.go
│   │   │   │   ├── resources.go
│   │   │   │   └── tests.json
│   │   │   ├── mysql/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── mysql.go
│   │   │   │   ├── mysql_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   └── scopes.go
│   │   │   ├── netlify/
│   │   │   │   ├── models.go
│   │   │   │   ├── netlify.go
│   │   │   │   ├── netlify_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── requests.go
│   │   │   │   └── result_output.json
│   │   │   ├── ngrok/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── models.go
│   │   │   │   ├── ngrok.go
│   │   │   │   ├── ngrok_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── requests.go
│   │   │   │   └── resources.go
│   │   │   ├── notion/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── notion.go
│   │   │   │   ├── notion_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   └── scopes.json
│   │   │   ├── openai/
│   │   │   │   ├── openai.go
│   │   │   │   ├── openai_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── result_output.json
│   │   │   │   └── scopes.go
│   │   │   ├── opsgenie/
│   │   │   │   ├── opsgenie.go
│   │   │   │   ├── opsgenie_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   └── scopes.json
│   │   │   ├── plaid/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── models.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── plaid.go
│   │   │   │   ├── plaid_test.go
│   │   │   │   └── products.go
│   │   │   ├── planetscale/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── planetscale.go
│   │   │   │   ├── planetscale_test.go
│   │   │   │   └── scopes.json
│   │   │   ├── postgres/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── postgres.go
│   │   │   │   └── postgres_test.go
│   │   │   ├── posthog/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── posthog.go
│   │   │   │   ├── posthog_test.go
│   │   │   │   └── scopes.json
│   │   │   ├── postman/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── postman.go
│   │   │   │   ├── postman_test.go
│   │   │   │   └── scopes.go
│   │   │   ├── privatekey/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── privatekey.go
│   │   │   │   └── privatekey_test.go
│   │   │   ├── sendgrid/
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── result_output.json
│   │   │   │   ├── scopes.go
│   │   │   │   ├── sendgrid.go
│   │   │   │   └── sendgrid_test.go
│   │   │   ├── shopify/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── scopes.json
│   │   │   │   ├── shopify.go
│   │   │   │   └── shopify_test.go
│   │   │   ├── slack/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── scopes.go
│   │   │   │   ├── slack.go
│   │   │   │   └── slack_test.go
│   │   │   ├── sourcegraph/
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── sourcegraph.go
│   │   │   │   └── sourcegraph_test.go
│   │   │   ├── square/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── scopes.go
│   │   │   │   ├── square.go
│   │   │   │   └── square_test.go
│   │   │   ├── stripe/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── restricted.yaml
│   │   │   │   ├── stripe.go
│   │   │   │   └── stripe_test.go
│   │   │   └── twilio/
│   │   │       ├── permissions.go
│   │   │       ├── permissions.yaml
│   │   │       ├── twilio.go
│   │   │       └── twilio_test.go
│   │   ├── cli.go
│   │   ├── config/
│   │   │   └── config.go
│   │   └── generate_permissions/
│   │       └── generate_permissions.go
│   ├── buffers/
│   │   ├── buffer/
│   │   │   ├── buffer.go
│   │   │   ├── buffer_test.go
│   │   │   └── metrics.go
│   │   └── pool/
│   │       ├── metrics.go
│   │       ├── pool.go
│   │       └── pool_test.go
│   ├── cache/
│   │   ├── cache.go
│   │   ├── decorator.go
│   │   ├── decorator_test.go
│   │   ├── lru/
│   │   │   ├── lru.go
│   │   │   └── lru_test.go
│   │   ├── metrics.go
│   │   └── simple/
│   │       ├── simple.go
│   │       └── simple_test.go
│   ├── channelmetrics/
│   │   ├── metrics_collector/
│   │   │   └── prometheus/
│   │   │       └── collector.go
│   │   ├── noopcollector.go
│   │   ├── observablechan.go
│   │   └── observablechan_test.go
│   ├── cleantemp/
│   │   ├── cleantemp.go
│   │   └── cleantemp_test.go
│   ├── common/
│   │   ├── context.go
│   │   ├── export_error.go
│   │   ├── filter.go
│   │   ├── filter_test.go
│   │   ├── glob/
│   │   │   ├── glob.go
│   │   │   └── glob_test.go
│   │   ├── http.go
│   │   ├── http_metrics.go
│   │   ├── http_test.go
│   │   ├── metrics.go
│   │   ├── patterns.go
│   │   ├── patterns_test.go
│   │   ├── recover.go
│   │   ├── secrets.go
│   │   ├── utils.go
│   │   ├── utils_test.go
│   │   ├── vars.go
│   │   └── vars_test.go
│   ├── config/
│   │   ├── config.go
│   │   ├── detectors.go
│   │   └── detectors_test.go
│   ├── context/
│   │   ├── context.go
│   │   └── context_test.go
│   ├── custom_detectors/
│   │   ├── CUSTOM_DETECTORS.md
│   │   ├── custom_detectors.go
│   │   ├── custom_detectors_test.go
│   │   ├── regex_varstring.go
│   │   ├── regex_varstring_test.go
│   │   ├── validation.go
│   │   └── validation_test.go
│   ├── decoders/
│   │   ├── base64.go
│   │   ├── base64_test.go
│   │   ├── decoders.go
│   │   ├── escaped_unicode.go
│   │   ├── escaped_unicode_bench_test.go
│   │   ├── escaped_unicode_test.go
│   │   ├── utf16.go
│   │   ├── utf16_test.go
│   │   ├── utf8.go
│   │   └── utf8_test.go
│   ├── detectors/
│   │   ├── abstract/
│   │   │   ├── abstract.go
│   │   │   ├── abstract_integration_test.go
│   │   │   └── abstract_test.go
│   │   ├── abuseipdb/
│   │   │   ├── abuseipdb.go
│   │   │   ├── abuseipdb_integration_test.go
│   │   │   └── abuseipdb_test.go
│   │   ├── abyssale/
│   │   │   ├── abyssale.go
│   │   │   ├── abyssale_integration_test.go
│   │   │   └── abyssale_test.go
│   │   ├── account_filter.go
│   │   ├── account_filter_test.go
│   │   ├── accuweather/
│   │   │   ├── v1/
│   │   │   │   ├── accuweather.go
│   │   │   │   ├── accuweather_integration_test.go
│   │   │   │   └── accuweather_test.go
│   │   │   └── v2/
│   │   │       ├── accuweather.go
│   │   │       ├── accuweather_integration_test.go
│   │   │       └── accuweather_test.go
│   │   ├── adafruitio/
│   │   │   ├── adafruitio.go
│   │   │   ├── adafruitio_integration_test.go
│   │   │   └── adafruitio_test.go
│   │   ├── adobeio/
│   │   │   ├── adobeio.go
│   │   │   ├── adobeio_integration_test.go
│   │   │   └── adobeio_test.go
│   │   ├── adzuna/
│   │   │   ├── adzuna.go
│   │   │   ├── adzuna_integration_test.go
│   │   │   └── adzuna_test.go
│   │   ├── aeroworkflow/
│   │   │   ├── aeroworkflow.go
│   │   │   ├── aeroworkflow_integration_test.go
│   │   │   └── aeroworkflow_test.go
│   │   ├── agora/
│   │   │   ├── agora.go
│   │   │   ├── agora_integration_test.go
│   │   │   └── agora_test.go
│   │   ├── aha/
│   │   │   ├── aha.go
│   │   │   ├── aha_integration_test.go
│   │   │   └── aha_test.go
│   │   ├── airbrakeprojectkey/
│   │   │   ├── airbrakeprojectkey.go
│   │   │   ├── airbrakeprojectkey_integration_test.go
│   │   │   └── airbrakeprojectkey_test.go
│   │   ├── airbrakeuserkey/
│   │   │   ├── airbrakeuserkey.go
│   │   │   ├── airbrakeuserkey_integration_test.go
│   │   │   └── airbrakeuserkey_test.go
│   │   ├── airship/
│   │   │   ├── airship.go
│   │   │   ├── airship_integration_test.go
│   │   │   └── airship_test.go
│   │   ├── airtableoauth/
│   │   │   ├── airtableoauth.go
│   │   │   ├── airtableoauth_integration_test.go
│   │   │   └── airtableoauth_test.go
│   │   ├── airtablepersonalaccesstoken/
│   │   │   ├── airtablepersonalaccesstoken.go
│   │   │   ├── airtablepersonalaccesstoken_integration_test.go
│   │   │   └── airtablepersonalaccesstoken_test.go
│   │   ├── airvisual/
│   │   │   ├── airvisual.go
│   │   │   ├── airvisual_integration_test.go
│   │   │   └── airvisual_test.go
│   │   ├── aiven/
│   │   │   ├── aiven.go
│   │   │   ├── aiven_integration_test.go
│   │   │   └── aiven_test.go
│   │   ├── alchemy/
│   │   │   ├── alchemy.go
│   │   │   ├── alchemy_integration_test.go
│   │   │   └── alchemy_test.go
│   │   ├── alconost/
│   │   │   ├── alconost.go
│   │   │   ├── alconost_integration_test.go
│   │   │   └── alconost_test.go
│   │   ├── alegra/
│   │   │   ├── alegra.go
│   │   │   ├── alegra_integration_test.go
│   │   │   └── alegra_test.go
│   │   ├── aletheiaapi/
│   │   │   ├── aletheiaapi.go
│   │   │   ├── aletheiaapi_integration_test.go
│   │   │   └── aletheiaapi_test.go
│   │   ├── algoliaadminkey/
│   │   │   ├── algoliaadminkey.go
│   │   │   ├── algoliaadminkey_integration_test.go
│   │   │   └── algoliaadminkey_test.go
│   │   ├── alibaba/
│   │   │   ├── alibaba.go
│   │   │   ├── alibaba_integration_test.go
│   │   │   └── alibaba_test.go
│   │   ├── alienvault/
│   │   │   ├── alienvault.go
│   │   │   ├── alienvault_integration_test.go
│   │   │   └── alienvault_test.go
│   │   ├── allsports/
│   │   │   ├── allsports.go
│   │   │   ├── allsports_integration_test.go
│   │   │   └── allsports_test.go
│   │   ├── amadeus/
│   │   │   ├── amadeus.go
│   │   │   ├── amadeus_integration_test.go
│   │   │   └── amadeus_test.go
│   │   ├── ambee/
│   │   │   ├── ambee.go
│   │   │   ├── ambee_integration_test.go
│   │   │   └── ambee_test.go
│   │   ├── amplitudeapikey/
│   │   │   ├── amplitudeapikey.go
│   │   │   ├── amplitudeapikey_integration_test.go
│   │   │   └── amplitudeapikey_test.go
│   │   ├── anthropic/
│   │   │   ├── anthropic.go
│   │   │   ├── anthropic_integration_test.go
│   │   │   └── anthropic_test.go
│   │   ├── anypoint/
│   │   │   ├── anypoint.go
│   │   │   ├── anypoint_integration_test.go
│   │   │   └── anypoint_test.go
│   │   ├── anypointoauth2/
│   │   │   ├── anypointoauth2.go
│   │   │   ├── anypointoauth2_integration_test.go
│   │   │   └── anypointoauth2_test.go
│   │   ├── apacta/
│   │   │   ├── apacta.go
│   │   │   ├── apacta_integration_test.go
│   │   │   └── apacta_test.go
│   │   ├── api2cart/
│   │   │   ├── api2cart.go
│   │   │   ├── api2cart_integration_test.go
│   │   │   └── api2cart_test.go
│   │   ├── apideck/
│   │   │   ├── apideck.go
│   │   │   ├── apideck_integration_test.go
│   │   │   └── apideck_test.go
│   │   ├── apiflash/
│   │   │   ├── apiflash.go
│   │   │   ├── apiflash_integration_test.go
│   │   │   └── apiflash_test.go
│   │   ├── apifonica/
│   │   │   ├── apifonica.go
│   │   │   ├── apifonica_integration_test.go
│   │   │   └── apifonica_test.go
│   │   ├── apify/
│   │   │   ├── apify.go
│   │   │   ├── apify_integration_test.go
│   │   │   └── apify_test.go
│   │   ├── apilayer/
│   │   │   ├── apilayer.go
│   │   │   ├── apilayer_integration_test.go
│   │   │   └── apilayer_test.go
│   │   ├── apimatic/
│   │   │   ├── apimatic.go
│   │   │   ├── apimatic_integration_test.go
│   │   │   └── apimatic_test.go
│   │   ├── apimetrics/
│   │   │   ├── apimetrics.go
│   │   │   ├── apimetrics_integration_test.go
│   │   │   └── apimetrics_test.go
│   │   ├── apitemplate/
│   │   │   ├── apitemplate.go
│   │   │   ├── apitemplate_integration_test.go
│   │   │   └── apitemplate_test.go
│   │   ├── apollo/
│   │   │   ├── apollo.go
│   │   │   ├── apollo_integration_test.go
│   │   │   └── apollo_test.go
│   │   ├── appcues/
│   │   │   ├── appcues.go
│   │   │   ├── appcues_integration_test.go
│   │   │   └── appcues_test.go
│   │   ├── appfollow/
│   │   │   ├── appfollow.go
│   │   │   ├── appfollow_integration_test.go
│   │   │   └── appfollow_test.go
│   │   ├── appointedd/
│   │   │   ├── appointedd.go
│   │   │   ├── appointedd_integration_test.go
│   │   │   └── appointedd_test.go
│   │   ├── appoptics/
│   │   │   ├── appoptics.go
│   │   │   ├── appoptics_integration_test.go
│   │   │   └── appoptics_test.go
│   │   ├── appsynergy/
│   │   │   ├── appsynergy.go
│   │   │   ├── appsynergy_integration_test.go
│   │   │   └── appsynergy_test.go
│   │   ├── apptivo/
│   │   │   ├── apptivo.go
│   │   │   ├── apptivo_integration_test.go
│   │   │   └── apptivo_test.go
│   │   ├── artifactory/
│   │   │   ├── artifactory.go
│   │   │   ├── artifactory_integration_test.go
│   │   │   └── artifactory_test.go
│   │   ├── artifactoryreferencetoken/
│   │   │   ├── artifactoryreferencetoken.go
│   │   │   ├── artifactoryreferencetoken_integration_test.go
│   │   │   └── artifactoryreferencetoken_test.go
│   │   ├── artsy/
│   │   │   ├── artsy.go
│   │   │   ├── artsy_integration_test.go
│   │   │   └── artsy_test.go
│   │   ├── asanaoauth/
│   │   │   ├── asanaoauth.go
│   │   │   ├── asanaoauth_integration_test.go
│   │   │   └── asanaoauth_test.go
│   │   ├── asanapersonalaccesstoken/
│   │   │   ├── asanapersonalaccesstoken.go
│   │   │   ├── asanapersonalaccesstoken_integration_test.go
│   │   │   └── asanapersonalaccesstoken_test.go
│   │   ├── assemblyai/
│   │   │   ├── assemblyai.go
│   │   │   ├── assemblyai_integration_test.go
│   │   │   └── assemblyai_test.go
│   │   ├── atera/
│   │   │   ├── atera.go
│   │   │   ├── atera_integration_test.go
│   │   │   └── atera_test.go
│   │   ├── atlassian/
│   │   │   ├── v1/
│   │   │   │   ├── atlassian.go
│   │   │   │   ├── atlassian_integration_test.go
│   │   │   │   └── atlassian_test.go
│   │   │   └── v2/
│   │   │       ├── atlassian.go
│   │   │       ├── atlassian_integration_test.go
│   │   │       └── atlassian_test.go
│   │   ├── audd/
│   │   │   ├── audd.go
│   │   │   ├── audd_integration_test.go
│   │   │   └── audd_test.go
│   │   ├── auth0managementapitoken/
│   │   │   ├── auth0managementapitoken.go
│   │   │   ├── auth0managementapitoken_integration_test.go
│   │   │   └── auth0managementapitoken_test.go
│   │   ├── auth0oauth/
│   │   │   ├── auth0oauth.go
│   │   │   ├── auth0oauth_integeration_test.go
│   │   │   └── auth0oauth_test.go
│   │   ├── autodesk/
│   │   │   ├── autodesk.go
│   │   │   ├── autodesk_integration_test.go
│   │   │   └── autodesk_test.go
│   │   ├── autoklose/
│   │   │   ├── autoklose.go
│   │   │   ├── autoklose_integration_test.go
│   │   │   └── autoklose_test.go
│   │   ├── autopilot/
│   │   │   ├── autopilot.go
│   │   │   ├── autopilot_integration_test.go
│   │   │   └── autopilot_test.go
│   │   ├── avazapersonalaccesstoken/
│   │   │   ├── avazapersonalaccesstoken.go
│   │   │   ├── avazapersonalaccesstoken_integration_test.go
│   │   │   └── avazapersonalaccesstoken_test.go
│   │   ├── aviationstack/
│   │   │   ├── aviationstack.go
│   │   │   ├── aviationstack_integration_test.go
│   │   │   └── aviationstack_test.go
│   │   ├── aws/
│   │   │   ├── access_keys/
│   │   │   │   ├── accesskey.go
│   │   │   │   ├── accesskey_integration_test.go
│   │   │   │   ├── accesskey_test.go
│   │   │   │   └── canary.go
│   │   │   ├── common.go
│   │   │   ├── session_keys/
│   │   │   │   ├── sessionkey.go
│   │   │   │   └── sessionkeys_test.go
│   │   │   └── utils.go
│   │   ├── axonaut/
│   │   │   ├── axonaut.go
│   │   │   ├── axonaut_integration_test.go
│   │   │   └── axonaut_test.go
│   │   ├── aylien/
│   │   │   ├── aylien.go
│   │   │   ├── aylien_integration_test.go
│   │   │   └── aylien_test.go
│   │   ├── ayrshare/
│   │   │   ├── ayrshare.go
│   │   │   ├── ayrshare_integration_test.go
│   │   │   └── ayrshare_test.go
│   │   ├── azure_batch/
│   │   │   ├── azurebatch.go
│   │   │   ├── azurebatch_integration_test.go
│   │   │   └── azurebatch_test.go
│   │   ├── azure_cosmosdb/
│   │   │   ├── azure_cosmosdb.go
│   │   │   ├── azure_cosmosdb_integration_test.go
│   │   │   ├── azure_cosmosdb_test.go
│   │   │   └── table.go
│   │   ├── azure_entra/
│   │   │   ├── common.go
│   │   │   ├── common_test.go
│   │   │   ├── refreshtoken/
│   │   │   │   ├── refreshtoken.go
│   │   │   │   ├── refreshtoken_integration_test.go
│   │   │   │   └── refreshtoken_test.go
│   │   │   └── serviceprincipal/
│   │   │       ├── sp.go
│   │   │       ├── v1/
│   │   │       │   ├── spv1.go
│   │   │       │   ├── spv1_integration_test.go
│   │   │       │   └── spv1_test.go
│   │   │       └── v2/
│   │   │           ├── spv2.go
│   │   │           ├── spv2_integration_test.go
│   │   │           └── spv2_test.go
│   │   ├── azure_openai/
│   │   │   ├── azure_openai.go
│   │   │   ├── azure_openai_integration_test.go
│   │   │   └── azure_openai_test.go
│   │   ├── azure_storage/
│   │   │   ├── storage.go
│   │   │   ├── storage_integration_test.go
│   │   │   └── storage_test.go
│   │   ├── azureapimanagement/
│   │   │   └── repositorykey/
│   │   │       ├── repositorykey.go
│   │   │       ├── repositorykey_integration_test.go
│   │   │       └── repositorykey_test.go
│   │   ├── azureapimanagementsubscriptionkey/
│   │   │   ├── azureapimanagementsubscriptionkey.go
│   │   │   ├── azureapimanagementsubscriptionkey_integration_test.go
│   │   │   └── azureapimanagementsubscriptionkey_test.go
│   │   ├── azureappconfigconnectionstring/
│   │   │   ├── azureappconfigconnectionstring.go
│   │   │   ├── azureappconfigconnectionstring_integration_test.go
│   │   │   └── azureappconfigconnectionstring_test.go
│   │   ├── azurecontainerregistry/
│   │   │   ├── azurecontainerregistry.go
│   │   │   ├── azurecontainerregistry_integration_test.go
│   │   │   └── azurecontainerregistry_test.go
│   │   ├── azuredevopspersonalaccesstoken/
│   │   │   ├── azuredevopspersonalaccesstoken.go
│   │   │   ├── azuredevopspersonalaccesstoken_integration_test.go
│   │   │   └── azuredevopspersonalaccesstoken_test.go
│   │   ├── azuredirectmanagementkey/
│   │   │   ├── azuredirectmanagementkey.go
│   │   │   ├── azuredirectmanagementkey_integration_test.go
│   │   │   └── azuredirectmanagementkey_test.go
│   │   ├── azurefunctionkey/
│   │   │   ├── azurefunctionkey.go
│   │   │   ├── azurefunctionkey_integration_test.go
│   │   │   └── azurefunctionkey_test.go
│   │   ├── azuresastoken/
│   │   │   ├── azuresastoken.go
│   │   │   ├── azuresastoken_integration_test.go
│   │   │   └── azuresastoken_test.go
│   │   ├── azuresearchadminkey/
│   │   │   ├── azuresearchadminkey.go
│   │   │   ├── azuresearchadminkey_integration_test.go
│   │   │   └── azuresearchadminkey_test.go
│   │   ├── azuresearchquerykey/
│   │   │   ├── azuresearchquerykey.go
│   │   │   ├── azuresearchquerykey_integration_test.go
│   │   │   └── azuresearchquerykey_test.go
│   │   ├── bannerbear/
│   │   │   ├── v1/
│   │   │   │   ├── bannerbear.go
│   │   │   │   ├── bannerbear_integration_test.go
│   │   │   │   └── bannerbear_test.go
│   │   │   └── v2/
│   │   │       ├── bannerbear.go
│   │   │       ├── bannerbear_integration_test.go
│   │   │       └── bannerbear_test.go
│   │   ├── baremetrics/
│   │   │   ├── baremetrics.go
│   │   │   ├── baremetrics_integration_test.go
│   │   │   └── baremetrics_test.go
│   │   ├── beamer/
│   │   │   ├── beamer.go
│   │   │   ├── beamer_integration_test.go
│   │   │   └── beamer_test.go
│   │   ├── beebole/
│   │   │   ├── beebole.go
│   │   │   ├── beebole_integration_test.go
│   │   │   └── beebole_test.go
│   │   ├── besnappy/
│   │   │   ├── besnappy.go
│   │   │   ├── besnappy_integration_test.go
│   │   │   └── besnappy_test.go
│   │   ├── besttime/
│   │   │   ├── besttime.go
│   │   │   ├── besttime_integration_test.go
│   │   │   └── besttime_test.go
│   │   ├── betterstack/
│   │   │   ├── betterstack.go
│   │   │   ├── betterstack_integration_test.go
│   │   │   └── betterstack_test.go
│   │   ├── billomat/
│   │   │   ├── billomat.go
│   │   │   ├── billomat_integration_test.go
│   │   │   └── billomat_test.go
│   │   ├── bingsubscriptionkey/
│   │   │   ├── bingsubscriptionkey.go
│   │   │   ├── bingsubscriptionkey_integration_test.go
│   │   │   └── bingsubscriptionkey_test.go
│   │   ├── bitbar/
│   │   │   ├── bitbar.go
│   │   │   ├── bitbar_integration_test.go
│   │   │   └── bitbar_test.go
│   │   ├── bitbucketapppassword/
│   │   │   ├── bitbucketapppassword.go
│   │   │   ├── bitbucketapppassword_integration_test.go
│   │   │   └── bitbucketapppassword_test.go
│   │   ├── bitcoinaverage/
│   │   │   ├── bitcoinaverage.go
│   │   │   ├── bitcoinaverage_integration_test.go
│   │   │   └── bitcoinaverage_test.go
│   │   ├── bitfinex/
│   │   │   ├── bitfinex.go
│   │   │   ├── bitfinex_integration_test.go
│   │   │   └── bitfinex_test.go
│   │   ├── bitlyaccesstoken/
│   │   │   ├── bitlyaccesstoken.go
│   │   │   ├── bitlyaccesstoken_integration_test.go
│   │   │   └── bitlyaccesstoken_test.go
│   │   ├── bitmex/
│   │   │   ├── bitmex.go
│   │   │   ├── bitmex_integration_test.go
│   │   │   └── bitmex_test.go
│   │   ├── blazemeter/
│   │   │   ├── blazemeter.go
│   │   │   ├── blazemeter_integration_test.go
│   │   │   └── blazemeter_test.go
│   │   ├── blitapp/
│   │   │   ├── blitapp.go
│   │   │   ├── blitapp_integration_test.go
│   │   │   └── blitapp_test.go
│   │   ├── blocknative/
│   │   │   ├── blocknative.go
│   │   │   ├── blocknative_integration_test.go
│   │   │   └── blocknative_test.go
│   │   ├── blogger/
│   │   │   ├── blogger.go
│   │   │   ├── blogger_integration_test.go
│   │   │   └── blogger_test.go
│   │   ├── bombbomb/
│   │   │   ├── bombbomb.go
│   │   │   ├── bombbomb_integration_test.go
│   │   │   └── bombbomb_test.go
│   │   ├── boostnote/
│   │   │   ├── boostnote.go
│   │   │   ├── boostnote_integration_test.go
│   │   │   └── boostnote_test.go
│   │   ├── borgbase/
│   │   │   ├── borgbase.go
│   │   │   ├── borgbase_integration_test.go
│   │   │   └── borgbase_test.go
│   │   ├── box/
│   │   │   ├── box.go
│   │   │   ├── box_integration_test.go
│   │   │   └── box_test.go
│   │   ├── boxoauth/
│   │   │   ├── boxoauth.go
│   │   │   ├── boxoauth_integration_test.go
│   │   │   └── boxoauth_test.go
│   │   ├── braintreepayments/
│   │   │   ├── braintreepayments.go
│   │   │   ├── braintreepayments_integration_test.go
│   │   │   └── braintreepayments_test.go
│   │   ├── brandfetch/
│   │   │   ├── v1/
│   │   │   │   ├── brandfetch.go
│   │   │   │   ├── brandfetch_integration_test.go
│   │   │   │   └── brandfetch_test.go
│   │   │   └── v2/
│   │   │       ├── brandfetch.go
│   │   │       ├── brandfetch_integration_test.go
│   │   │       └── brandfetch_test.go
│   │   ├── browserstack/
│   │   │   ├── browserstack.go
│   │   │   ├── browserstack_integration_test.go
│   │   │   └── browserstack_test.go
│   │   ├── browshot/
│   │   │   ├── browshot.go
│   │   │   ├── browshot_integration_test.go
│   │   │   └── browshot_test.go
│   │   ├── bscscan/
│   │   │   ├── bscscan.go
│   │   │   ├── bscscan_integration_test.go
│   │   │   └── bscscan_test.go
│   │   ├── buddyns/
│   │   │   ├── buddyns.go
│   │   │   ├── buddyns_integration_test.go
│   │   │   └── buddyns_test.go
│   │   ├── budibase/
│   │   │   ├── budibase.go
│   │   │   ├── budibase_integration_test.go
│   │   │   └── budibase_test.go
│   │   ├── bugherd/
│   │   │   ├── bugherd.go
│   │   │   ├── bugherd_integration_test.go
│   │   │   └── bugherd_test.go
│   │   ├── bugsnag/
│   │   │   ├── bugsnag.go
│   │   │   ├── bugsnag_integration_test.go
│   │   │   └── bugsnag_test.go
│   │   ├── buildkite/
│   │   │   ├── v1/
│   │   │   │   ├── buildkite.go
│   │   │   │   ├── buildkite_integration_test.go
│   │   │   │   └── buildkite_test.go
│   │   │   └── v2/
│   │   │       ├── buildkite.go
│   │   │       ├── buildkite_test.go
│   │   │       └── buildkitev2_integration_test.go
│   │   ├── bulbul/
│   │   │   ├── bulbul.go
│   │   │   ├── bulbul_integration_test.go
│   │   │   └── bulbul_test.go
│   │   ├── bulksms/
│   │   │   ├── bulksms.go
│   │   │   ├── bulksms_integration_test.go
│   │   │   └── bulksms_test.go
│   │   ├── buttercms/
│   │   │   ├── buttercms.go
│   │   │   ├── buttercms_integration_test.go
│   │   │   └── buttercms_test.go
│   │   ├── caflou/
│   │   │   ├── caflou.go
│   │   │   ├── caflou_integration_test.go
│   │   │   └── caflou_test.go
│   │   ├── calendarific/
│   │   │   ├── calendarific.go
│   │   │   ├── calendarific_integration_test.go
│   │   │   └── calendarific_test.go
│   │   ├── calendlyapikey/
│   │   │   ├── calendlyapikey.go
│   │   │   ├── calendlyapikey_integration_test.go
│   │   │   └── calendlyapikey_test.go
│   │   ├── calorieninja/
│   │   │   ├── calorieninja.go
│   │   │   ├── calorieninja_integration_test.go
│   │   │   └── calorieninja_test.go
│   │   ├── campayn/
│   │   │   ├── campayn.go
│   │   │   ├── campayn_integration_test.go
│   │   │   └── campayn_test.go
│   │   ├── cannyio/
│   │   │   ├── cannyio.go
│   │   │   ├── cannyio_integration_test.go
│   │   │   └── cannyio_test.go
│   │   ├── capsulecrm/
│   │   │   ├── capsulecrm.go
│   │   │   ├── capsulecrm_integration_test.go
│   │   │   └── capsulecrm_test.go
│   │   ├── captaindata/
│   │   │   ├── v1/
│   │   │   │   ├── captaindata.go
│   │   │   │   ├── captaindata_integration_test.go
│   │   │   │   └── captaindata_test.go
│   │   │   └── v2/
│   │   │       ├── captaindata.go
│   │   │       ├── captaindata_integration_test.go
│   │   │       └── captaindata_test.go
│   │   ├── carboninterface/
│   │   │   ├── carboninterface.go
│   │   │   ├── carboninterface_integration_test.go
│   │   │   └── carboninterface_test.go
│   │   ├── cashboard/
│   │   │   ├── cashboard.go
│   │   │   ├── cashboard_integration_test.go
│   │   │   └── cashboard_test.go
│   │   ├── caspio/
│   │   │   ├── caspio.go
│   │   │   ├── caspio_integration_test.go
│   │   │   └── caspio_test.go
│   │   ├── censys/
│   │   │   ├── censys.go
│   │   │   ├── censys_integration_test.go
│   │   │   └── censys_test.go
│   │   ├── centralstationcrm/
│   │   │   ├── centralstationcrm.go
│   │   │   ├── centralstationcrm_integration_test.go
│   │   │   └── centralstationcrm_test.go
│   │   ├── cexio/
│   │   │   ├── cexio.go
│   │   │   ├── cexio_integration_test.go
│   │   │   └── cexio_test.go
│   │   ├── chartmogul/
│   │   │   ├── chartmogul.go
│   │   │   ├── chartmogul_integration_test.go
│   │   │   └── chartmogul_test.go
│   │   ├── chatbot/
│   │   │   ├── chatbot.go
│   │   │   ├── chatbot_integration_test.go
│   │   │   └── chatbot_test.go
│   │   ├── chatfule/
│   │   │   ├── chatfule.go
│   │   │   ├── chatfule_integration_test.go
│   │   │   └── chatfule_test.go
│   │   ├── checio/
│   │   │   ├── checio.go
│   │   │   ├── checio_integration_test.go
│   │   │   └── checio_test.go
│   │   ├── checklyhq/
│   │   │   ├── checklyhq.go
│   │   │   ├── checklyhq_integration_test.go
│   │   │   └── checklyhq_test.go
│   │   ├── checkout/
│   │   │   ├── checkout.go
│   │   │   ├── checkout_integration_test.go
│   │   │   └── checkout_test.go
│   │   ├── checkvist/
│   │   │   ├── checkvist.go
│   │   │   ├── checkvist_integration_test.go
│   │   │   └── checkvist_test.go
│   │   ├── cicero/
│   │   │   ├── cicero.go
│   │   │   ├── cicero_integration_test.go
│   │   │   └── cicero_test.go
│   │   ├── circleci/
│   │   │   ├── v1/
│   │   │   │   ├── circleci.go
│   │   │   │   ├── circleci_integration_test.go
│   │   │   │   └── circleci_test.go
│   │   │   └── v2/
│   │   │       ├── circleci.go
│   │   │       ├── circleci_integration_test.go
│   │   │       └── circleci_test.go
│   │   ├── clarifai/
│   │   │   ├── clarifai.go
│   │   │   ├── clarifai_integration_test.go
│   │   │   └── clarifai_test.go
│   │   ├── clearbit/
│   │   │   ├── clearbit.go
│   │   │   ├── clearbit_integration_test.go
│   │   │   └── clearbit_test.go
│   │   ├── clickhelp/
│   │   │   ├── clickhelp.go
│   │   │   ├── clickhelp_integration_test.go
│   │   │   └── clickhelp_test.go
│   │   ├── clicksendsms/
│   │   │   ├── clicksendsms.go
│   │   │   ├── clicksendsms_integration_test.go
│   │   │   └── clicksendsms_test.go
│   │   ├── clickuppersonaltoken/
│   │   │   ├── clickuppersonaltoken.go
│   │   │   ├── clickuppersonaltoken_integration_test.go
│   │   │   └── clickuppersonaltoken_test.go
│   │   ├── cliengo/
│   │   │   ├── cliengo.go
│   │   │   ├── cliengo_integration_test.go
│   │   │   └── cliengo_test.go
│   │   ├── clientary/
│   │   │   ├── clientary.go
│   │   │   ├── clientary_integration_test.go
│   │   │   └── clientary_test.go
│   │   ├── clinchpad/
│   │   │   ├── clinchpad.go
│   │   │   ├── clinchpad_integration_test.go
│   │   │   └── clinchpad_test.go
│   │   ├── clockify/
│   │   │   ├── clockify.go
│   │   │   ├── clockify_integration_test.go
│   │   │   └── clockify_test.go
│   │   ├── clockworksms/
│   │   │   ├── clockworksms.go
│   │   │   ├── clockworksms_integration_test.go
│   │   │   └── clockworksms_test.go
│   │   ├── closecrm/
│   │   │   ├── close.go
│   │   │   ├── close_integration_test.go
│   │   │   └── close_test.go
│   │   ├── cloudconvert/
│   │   │   ├── cloudconvert.go
│   │   │   ├── cloudconvert_integration_test.go
│   │   │   └── cloudconvert_test.go
│   │   ├── cloudelements/
│   │   │   ├── cloudelements.go
│   │   │   ├── cloudelements_integration_test.go
│   │   │   └── cloudelements_test.go
│   │   ├── cloudflareapitoken/
│   │   │   ├── cloudflareapitoken.go
│   │   │   ├── cloudflareapitoken_integration_test.go
│   │   │   └── cloudflareapitoken_test.go
│   │   ├── cloudflarecakey/
│   │   │   ├── cloudflarecakey.go
│   │   │   ├── cloudflarecakey_integration_test.go
│   │   │   └── cloudflarecakey_test.go
│   │   ├── cloudflareglobalapikey/
│   │   │   ├── cloudflareglobalapikey.go
│   │   │   ├── cloudflareglobalapikey_integration_test.go
│   │   │   └── cloudflareglobalapikey_test.go
│   │   ├── cloudimage/
│   │   │   ├── cloudimage.go
│   │   │   ├── cloudimage_integration_test.go
│   │   │   └── cloudimage_test.go
│   │   ├── cloudmersive/
│   │   │   ├── cloudmersive.go
│   │   │   ├── cloudmersive_integration_test.go
│   │   │   └── cloudmersive_test.go
│   │   ├── cloudplan/
│   │   │   ├── cloudplan.go
│   │   │   ├── cloudplan_integration_test.go
│   │   │   └── cloudplan_test.go
│   │   ├── cloudsmith/
│   │   │   ├── cloudsmith.go
│   │   │   ├── cloudsmith_integration_test.go
│   │   │   └── cloudsmith_test.go
│   │   ├── cloverly/
│   │   │   ├── cloverly.go
│   │   │   ├── cloverly_integration_test.go
│   │   │   └── cloverly_test.go
│   │   ├── cloze/
│   │   │   ├── cloze.go
│   │   │   ├── cloze_integration_test.go
│   │   │   └── cloze_test.go
│   │   ├── clustdoc/
│   │   │   ├── clustdoc.go
│   │   │   ├── clustdoc_integration_test.go
│   │   │   └── clustdoc_test.go
│   │   ├── coda/
│   │   │   ├── coda.go
│   │   │   ├── coda_integration_test.go
│   │   │   └── coda_test.go
│   │   ├── codacy/
│   │   │   ├── codacy.go
│   │   │   ├── codacy_integration_test.go
│   │   │   └── codacy_test.go
│   │   ├── codeclimate/
│   │   │   ├── codeclimate.go
│   │   │   ├── codeclimate_integration_test.go
│   │   │   └── codeclimate_test.go
│   │   ├── codemagic/
│   │   │   ├── codemagic.go
│   │   │   ├── codemagic_integration_test.go
│   │   │   └── codemagic_test.go
│   │   ├── codequiry/
│   │   │   ├── codequiry.go
│   │   │   ├── codequiry_integration_test.go
│   │   │   └── codequiry_test.go
│   │   ├── coinapi/
│   │   │   ├── coinapi.go
│   │   │   ├── coinapi_integration_test.go
│   │   │   └── coinapi_test.go
│   │   ├── coinbase/
│   │   │   ├── coinbase.go
│   │   │   ├── coinbase_integration_test.go
│   │   │   └── coinbase_test.go
│   │   ├── coinlayer/
│   │   │   ├── coinlayer.go
│   │   │   ├── coinlayer_integration_test.go
│   │   │   └── coinlayer_test.go
│   │   ├── coinlib/
│   │   │   ├── coinlib.go
│   │   │   ├── coinlib_integration_test.go
│   │   │   └── coinlib_test.go
│   │   ├── collect2/
│   │   │   ├── collect2.go
│   │   │   ├── collect2_integration_test.go
│   │   │   └── collect2_test.go
│   │   ├── column/
│   │   │   ├── column.go
│   │   │   ├── column_integration_test.go
│   │   │   └── column_test.go
│   │   ├── commercejs/
│   │   │   ├── commercejs.go
│   │   │   ├── commercejs_integration_test.go
│   │   │   └── commercejs_test.go
│   │   ├── commodities/
│   │   │   ├── commodities.go
│   │   │   ├── commodities_integration_test.go
│   │   │   └── commodities_test.go
│   │   ├── companyhub/
│   │   │   ├── companyhub.go
│   │   │   ├── companyhub_integration_test.go
│   │   │   └── companyhub_test.go
│   │   ├── confluent/
│   │   │   ├── confluent.go
│   │   │   ├── confluent_integration_test.go
│   │   │   └── confluent_test.go
│   │   ├── contentfulpersonalaccesstoken/
│   │   │   ├── contentfulpersonalaccesstoken.go
│   │   │   ├── contentfulpersonalaccesstoken_test.go
│   │   │   └── contentfulpersonalacesstoken_integration_test.go
│   │   ├── conversiontools/
│   │   │   ├── conversiontools.go
│   │   │   ├── conversiontools_integration_test.go
│   │   │   └── conversiontools_test.go
│   │   ├── convertapi/
│   │   │   ├── convertapi.go
│   │   │   ├── convertapi_integration_test.go
│   │   │   └── convertapi_test.go
│   │   ├── convertkit/
│   │   │   ├── convertkit.go
│   │   │   ├── convertkit_integration_test.go
│   │   │   └── convertkit_test.go
│   │   ├── convier/
│   │   │   ├── convier.go
│   │   │   ├── convier_integration_test.go
│   │   │   └── convier_test.go
│   │   ├── copper/
│   │   │   ├── copper.go
│   │   │   ├── copper_integration_test.go
│   │   │   └── copper_test.go
│   │   ├── copy_metadata_test.go
│   │   ├── couchbase/
│   │   │   ├── couchbase.go
│   │   │   ├── couchbase_integration_test.go
│   │   │   └── couchbase_test.go
│   │   ├── countrylayer/
│   │   │   ├── countrylayer.go
│   │   │   ├── countrylayer_integration_test.go
│   │   │   └── countrylayer_test.go
│   │   ├── courier/
│   │   │   ├── courier.go
│   │   │   ├── courier_integration_test.go
│   │   │   └── courier_test.go
│   │   ├── coveralls/
│   │   │   ├── coveralls.go
│   │   │   ├── coveralls_integration_test.go
│   │   │   └── coveralls_test.go
│   │   ├── craftmypdf/
│   │   │   ├── craftmypdf.go
│   │   │   ├── craftmypdf_integration_test.go
│   │   │   └── craftmypdf_test.go
│   │   ├── crowdin/
│   │   │   ├── crowdin.go
│   │   │   ├── crowdin_integration_test.go
│   │   │   └── crowdin_test.go
│   │   ├── cryptocompare/
│   │   │   ├── cryptocompare.go
│   │   │   ├── cryptocompare_integration_test.go
│   │   │   └── cryptocompare_test.go
│   │   ├── currencycloud/
│   │   │   ├── currencycloud.go
│   │   │   ├── currencycloud_integration_test.go
│   │   │   └── currencycloud_test.go
│   │   ├── currencyfreaks/
│   │   │   ├── currencyfreaks.go
│   │   │   ├── currencyfreaks_integration_test.go
│   │   │   └── currencyfreaks_test.go
│   │   ├── currencylayer/
│   │   │   ├── currencylayer.go
│   │   │   ├── currencylayer_integration_test.go
│   │   │   └── currencylayer_test.go
│   │   ├── currencyscoop/
│   │   │   ├── currencyscoop.go
│   │   │   ├── currencyscoop_integration_test.go
│   │   │   └── currencyscoop_test.go
│   │   ├── currentsapi/
│   │   │   ├── currentsapi.go
│   │   │   ├── currentsapi_integration_test.go
│   │   │   └── currentsapi_test.go
│   │   ├── customerguru/
│   │   │   ├── customerguru.go
│   │   │   ├── customerguru_integration_test.go
│   │   │   └── customerguru_test.go
│   │   ├── customerio/
│   │   │   ├── customerio.go
│   │   │   ├── customerio_integration_test.go
│   │   │   └── customerio_test.go
│   │   ├── d7network/
│   │   │   ├── d7network.go
│   │   │   ├── d7network_integration_test.go
│   │   │   └── d7network_test.go
│   │   ├── dailyco/
│   │   │   ├── dailyco.go
│   │   │   ├── dailyco_integration_test.go
│   │   │   └── dailyco_test.go
│   │   ├── dandelion/
│   │   │   ├── dandelion.go
│   │   │   ├── dandelion_integration_test.go
│   │   │   └── dandelion_test.go
│   │   ├── dareboost/
│   │   │   ├── dareboost.go
│   │   │   ├── dareboost_integration_test.go
│   │   │   └── dareboost_test.go
│   │   ├── databox/
│   │   │   ├── databox.go
│   │   │   ├── databox_integration_test.go
│   │   │   └── databox_test.go
│   │   ├── databrickstoken/
│   │   │   ├── databrickstoken.go
│   │   │   ├── databrickstoken_integration_test.go
│   │   │   └── databrickstoken_test.go
│   │   ├── datadogapikey/
│   │   │   ├── datadogapikey.go
│   │   │   ├── datadogapikey_integration_test.go
│   │   │   └── datadogapikey_test.go
│   │   ├── datadogtoken/
│   │   │   ├── datadogtoken.go
│   │   │   ├── datadogtoken_integration_test.go
│   │   │   └── datadogtoken_test.go
│   │   ├── datagov/
│   │   │   ├── datagov.go
│   │   │   ├── datagov_integration_test.go
│   │   │   └── datagov_test.go
│   │   ├── debounce/
│   │   │   ├── debounce.go
│   │   │   ├── debounce_integration_test.go
│   │   │   └── debounce_test.go
│   │   ├── deepai/
│   │   │   ├── deepai.go
│   │   │   ├── deepai_integration_test.go
│   │   │   └── deepai_test.go
│   │   ├── deepgram/
│   │   │   ├── deepgram.go
│   │   │   ├── deepgram_integration_test.go
│   │   │   └── deepgram_test.go
│   │   ├── deepseek/
│   │   │   ├── deepseek.go
│   │   │   ├── deepseek_integration_test.go
│   │   │   └── deepseek_test.go
│   │   ├── delighted/
│   │   │   ├── delighted.go
│   │   │   ├── delighted_integration_test.go
│   │   │   └── delighted_test.go
│   │   ├── demio/
│   │   │   ├── demio.go
│   │   │   ├── demio_integration_test.go
│   │   │   └── demio_test.go
│   │   ├── deno/
│   │   │   ├── denodeploy.go
│   │   │   ├── denodeploy_integration_test.go
│   │   │   └── denodeploy_test.go
│   │   ├── deputy/
│   │   │   ├── deputy.go
│   │   │   ├── deputy_integration_test.go
│   │   │   └── deputy_test.go
│   │   ├── detectify/
│   │   │   ├── detectify.go
│   │   │   ├── detectify_integration_test.go
│   │   │   └── detectify_test.go
│   │   ├── detectlanguage/
│   │   │   ├── detectlanguage.go
│   │   │   ├── detectlanguage_integration_test.go
│   │   │   └── detectlanguage_test.go
│   │   ├── detectors.go
│   │   ├── detectors_test.go
│   │   ├── dfuse/
│   │   │   ├── dfuse.go
│   │   │   ├── dfuse_integration_test.go
│   │   │   └── dfuse_test.go
│   │   ├── diffbot/
│   │   │   ├── diffbot.go
│   │   │   ├── diffbot_integration_test.go
│   │   │   └── diffbot_test.go
│   │   ├── diggernaut/
│   │   │   ├── diggernaut.go
│   │   │   ├── diggernaut_integration_test.go
│   │   │   └── diggernaut_test.go
│   │   ├── digitaloceantoken/
│   │   │   ├── digitaloceantoken.go
│   │   │   ├── digitaloceantoken_integration_test.go
│   │   │   └── digitaloceantoken_test.go
│   │   ├── digitaloceanv2/
│   │   │   ├── digitaloceanv2.go
│   │   │   ├── digitaloceanv2_integration_test.go
│   │   │   └── digitaloceanv2_test.go
│   │   ├── discordbottoken/
│   │   │   ├── discordbottoken.go
│   │   │   ├── discordbottoken_integration_test.go
│   │   │   └── discordbottoken_test.go
│   │   ├── discordwebhook/
│   │   │   ├── discordwebhook.go
│   │   │   ├── discordwebhook_integration_test.go
│   │   │   └── discordwebhook_test.go
│   │   ├── disqus/
│   │   │   ├── disqus.go
│   │   │   ├── disqus_integration_test.go
│   │   │   └── disqus_test.go
│   │   ├── ditto/
│   │   │   ├── ditto.go
│   │   │   ├── ditto_integration_test.go
│   │   │   └── ditto_test.go
│   │   ├── dnscheck/
│   │   │   ├── dnscheck.go
│   │   │   ├── dnscheck_integration_test.go
│   │   │   └── dnscheck_test.go
│   │   ├── docker/
│   │   │   ├── docker_auth_config.go
│   │   │   ├── docker_auth_config_integration_test.go
│   │   │   └── docker_auth_config_test.go
│   │   ├── dockerhub/
│   │   │   ├── v1/
│   │   │   │   ├── dockerhub.go
│   │   │   │   ├── dockerhub_integration_test.go
│   │   │   │   └── dockerhub_test.go
│   │   │   └── v2/
│   │   │       ├── dockerhub.go
│   │   │       ├── dockerhub_integration_test.go
│   │   │       └── dockerhub_test.go
│   │   ├── docparser/
│   │   │   ├── docparser.go
│   │   │   ├── docparser_integration_test.go
│   │   │   └── docparser_test.go
│   │   ├── documo/
│   │   │   ├── documo.go
│   │   │   ├── documo_integration_test.go
│   │   │   └── documo_test.go
│   │   ├── docusign/
│   │   │   ├── docusign.go
│   │   │   ├── docusign_integration_test.go
│   │   │   └── docusign_test.go
│   │   ├── doppler/
│   │   │   ├── doppler.go
│   │   │   ├── doppler_integration_test.go
│   │   │   └── doppler_test.go
│   │   ├── dotdigital/
│   │   │   ├── dotdigital.go
│   │   │   ├── dotdigital_integration_test.go
│   │   │   └── dotdigital_test.go
│   │   ├── dovico/
│   │   │   ├── dovico.go
│   │   │   ├── dovico_integration_test.go
│   │   │   └── dovico_test.go
│   │   ├── dronahq/
│   │   │   ├── dronahq.go
│   │   │   ├── dronahq_integration_test.go
│   │   │   └── dronahq_test.go
│   │   ├── droneci/
│   │   │   ├── droneci.go
│   │   │   ├── droneci_integration_test.go
│   │   │   └── droneci_test.go
│   │   ├── dropbox/
│   │   │   ├── dropbox.go
│   │   │   ├── dropbox_integration_test.go
│   │   │   └── dropbox_test.go
│   │   ├── duply/
│   │   │   ├── duply.go
│   │   │   ├── duply_integration_test.go
│   │   │   └── duply_test.go
│   │   ├── dwolla/
│   │   │   ├── dwolla.go
│   │   │   ├── dwolla_integration_test.go
│   │   │   └── dwolla_test.go
│   │   ├── dynalist/
│   │   │   ├── dynalist.go
│   │   │   ├── dynalist_integration_test.go
│   │   │   └── dynalist_test.go
│   │   ├── dyspatch/
│   │   │   ├── dyspatch.go
│   │   │   ├── dyspatch_integration_test.go
│   │   │   └── dyspatch_test.go
│   │   ├── eagleeyenetworks/
│   │   │   ├── eagleeyenetworks.go
│   │   │   ├── eagleeyenetworks_integration_test.go
│   │   │   └── eagleeyenetworks_test.go
│   │   ├── easyinsight/
│   │   │   ├── easyinsight.go
│   │   │   ├── easyinsight_integration_test.go
│   │   │   └── easyinsight_test.go
│   │   ├── ecostruxureit/
│   │   │   ├── ecostruxureit.go
│   │   │   ├── ecostruxureit_integration_test.go
│   │   │   └── ecostruxureit_test.go
│   │   ├── edamam/
│   │   │   ├── edamam.go
│   │   │   ├── edamam_integration_test.go
│   │   │   └── edamam_test.go
│   │   ├── edenai/
│   │   │   ├── edenai.go
│   │   │   ├── edenai_integration_test.go
│   │   │   └── edenai_test.go
│   │   ├── eightxeight/
│   │   │   ├── eightxeight.go
│   │   │   ├── eightxeight_integration_test.go
│   │   │   └── eightxeight_test.go
│   │   ├── elasticemail/
│   │   │   ├── elasticemail.go
│   │   │   ├── elasticemail_integration_test.go
│   │   │   └── elasticemail_test.go
│   │   ├── elevenlabs/
│   │   │   ├── v1/
│   │   │   │   ├── elevenlabs.go
│   │   │   │   ├── elevenlabs_integration_test.go
│   │   │   │   └── elevenlabs_test.go
│   │   │   └── v2/
│   │   │       ├── elevenlabs.go
│   │   │       ├── elevenlabs_integration_test.go
│   │   │       └── elevenlabs_test.go
│   │   ├── enablex/
│   │   │   ├── enablex.go
│   │   │   ├── enablex_integration_test.go
│   │   │   └── enablex_test.go
│   │   ├── endorlabs/
│   │   │   ├── endorlabs.go
│   │   │   ├── endorlabs_integration_test.go
│   │   │   └── endorlabs_test.go
│   │   ├── endpoint_customizer.go
│   │   ├── endpoint_customizer_test.go
│   │   ├── enigma/
│   │   │   ├── enigma.go
│   │   │   ├── enigma_integration_test.go
│   │   │   └── enigma_test.go
│   │   ├── envoyapikey/
│   │   │   ├── envoyapikey.go
│   │   │   ├── envoyapikey_integration_test.go
│   │   │   └── envoyapikey_test.go
│   │   ├── eraser/
│   │   │   ├── eraser.go
│   │   │   ├── eraser_integration_test.go
│   │   │   └── eraser_test.go
│   │   ├── etherscan/
│   │   │   ├── etherscan.go
│   │   │   ├── etherscan_integration_test.go
│   │   │   └── etherscan_test.go
│   │   ├── ethplorer/
│   │   │   ├── ethplorer.go
│   │   │   ├── ethplorer_integration_test.go
│   │   │   └── ethplorer_test.go
│   │   ├── eventbrite/
│   │   │   ├── eventbrite.go
│   │   │   ├── eventbrite_integration_test.go
│   │   │   └── eventbrite_test.go
│   │   ├── everhour/
│   │   │   ├── everhour.go
│   │   │   ├── everhour_integration_test.go
│   │   │   └── everhour_test.go
│   │   ├── exchangerateapi/
│   │   │   ├── exchangerateapi.go
│   │   │   ├── exchangerateapi_integration_test.go
│   │   │   └── exchangerateapi_test.go
│   │   ├── exchangeratesapi/
│   │   │   ├── exchangeratesapi.go
│   │   │   ├── exchangeratesapi_integration_test.go
│   │   │   └── exchangeratesapi_test.go
│   │   ├── exportsdk/
│   │   │   ├── exportsdk.go
│   │   │   ├── exportsdk_integration_test.go
│   │   │   └── exportsdk_test.go
│   │   ├── extractorapi/
│   │   │   ├── extractorapi.go
│   │   │   ├── extractorapi_integration_test.go
│   │   │   └── extractorapi_test.go
│   │   ├── facebookoauth/
│   │   │   ├── facebookoauth.go
│   │   │   ├── facebookoauth_integration_test.go
│   │   │   └── facebookoauth_test.go
│   │   ├── faceplusplus/
│   │   │   ├── faceplusplus.go
│   │   │   ├── faceplusplus_integration_test.go
│   │   │   └── faceplusplus_test.go
│   │   ├── falsepositives.go
│   │   ├── falsepositives_test.go
│   │   ├── fastforex/
│   │   │   ├── fastforex.go
│   │   │   ├── fastforex_integration_test.go
│   │   │   └── fastforex_test.go
│   │   ├── fastlypersonaltoken/
│   │   │   ├── fastlypersonaltoken.go
│   │   │   ├── fastlypersonaltoken_integration_test.go
│   │   │   └── fastlypersonaltoken_test.go
│   │   ├── feedier/
│   │   │   ├── feedier.go
│   │   │   ├── feedier_integration_test.go
│   │   │   └── feedier_test.go
│   │   ├── fetchrss/
│   │   │   ├── fetchrss.go
│   │   │   ├── fetchrss_integration_test.go
│   │   │   └── fetchrss_test.go
│   │   ├── fibery/
│   │   │   ├── fibery.go
│   │   │   ├── fibery_integration_test.go
│   │   │   └── fibery_test.go
│   │   ├── figmapersonalaccesstoken/
│   │   │   ├── v1/
│   │   │   │   ├── figmapersonalaccesstoken.go
│   │   │   │   ├── figmapersonalaccesstoken_test.go
│   │   │   │   └── figmapersonalacesstoken_integration_test.go
│   │   │   └── v2/
│   │   │       ├── figmapersonalaccesstoken_integration_test.go
│   │   │       ├── figmapersonalaccesstoken_v2.go
│   │   │       └── figmapersonalaccesstoken_v2_test.go
│   │   ├── fileio/
│   │   │   ├── fileio.go
│   │   │   ├── fileio_integration_test.go
│   │   │   └── fileio_test.go
│   │   ├── finage/
│   │   │   ├── finage.go
│   │   │   ├── finage_integration_test.go
│   │   │   └── finage_test.go
│   │   ├── financialmodelingprep/
│   │   │   ├── financialmodelingprep.go
│   │   │   ├── financialmodelingprep_integration_test.go
│   │   │   └── financialmodelingprep_test.go
│   │   ├── findl/
│   │   │   ├── findl.go
│   │   │   ├── findl_integration_test.go
│   │   │   └── findl_test.go
│   │   ├── finnhub/
│   │   │   ├── finnhub.go
│   │   │   ├── finnhub_integration_test.go
│   │   │   └── finnhub_test.go
│   │   ├── fixerio/
│   │   │   ├── fixerio.go
│   │   │   ├── fixerio_integration_test.go
│   │   │   └── fixerio_test.go
│   │   ├── flatio/
│   │   │   ├── flatio.go
│   │   │   ├── flatio_integration_test.go
│   │   │   └── flatio_test.go
│   │   ├── fleetbase/
│   │   │   ├── fleetbase.go
│   │   │   ├── fleetbase_integration_test.go
│   │   │   └── fleetbase_test.go
│   │   ├── flexport/
│   │   │   ├── flexport.go
│   │   │   └── flexport_test.go
│   │   ├── flickr/
│   │   │   ├── flickr.go
│   │   │   ├── flickr_integration_test.go
│   │   │   └── flickr_test.go
│   │   ├── flightapi/
│   │   │   ├── flightapi.go
│   │   │   ├── flightapi_integration_test.go
│   │   │   └── flightapi_test.go
│   │   ├── flightlabs/
│   │   │   ├── flightlabs.go
│   │   │   ├── flightlabs_integration_test.go
│   │   │   └── flightlabs_test.go
│   │   ├── flightstats/
│   │   │   ├── flightstats.go
│   │   │   ├── flightstats_integration_test.go
│   │   │   └── flightstats_test.go
│   │   ├── float/
│   │   │   ├── float.go
│   │   │   ├── float_integration_test.go
│   │   │   └── float_test.go
│   │   ├── flowflu/
│   │   │   ├── flowflu.go
│   │   │   ├── flowflu_integration_test.go
│   │   │   └── flowflu_test.go
│   │   ├── flutterwave/
│   │   │   ├── flutterwave.go
│   │   │   ├── flutterwave_integration_test.go
│   │   │   └── flutterwave_test.go
│   │   ├── flyio/
│   │   │   ├── flyio.go
│   │   │   ├── flyio_integration_test.go
│   │   │   └── flyio_test.go
│   │   ├── fmfw/
│   │   │   ├── fmfw.go
│   │   │   ├── fmfw_integration_test.go
│   │   │   └── fmfw_test.go
│   │   ├── formbucket/
│   │   │   ├── formbucket.go
│   │   │   ├── formbucket_integration_test.go
│   │   │   └── formbucket_test.go
│   │   ├── formcraft/
│   │   │   ├── formcraft.go
│   │   │   ├── formcraft_integration_test.go
│   │   │   └── formcraft_test.go
│   │   ├── formio/
│   │   │   ├── formio.go
│   │   │   ├── formio_integration_test.go
│   │   │   └── formio_test.go
│   │   ├── formsite/
│   │   │   ├── formsite.go
│   │   │   ├── formsite_integration_test.go
│   │   │   └── formsite_test.go
│   │   ├── foursquare/
│   │   │   ├── foursquare.go
│   │   │   ├── foursquare_integration_test.go
│   │   │   └── foursquare_test.go
│   │   ├── fp_badlist.txt
│   │   ├── fp_programmingbooks.txt
│   │   ├── fp_uuids.txt
│   │   ├── fp_words.txt
│   │   ├── frameio/
│   │   │   ├── frameio.go
│   │   │   ├── frameio_integration_test.go
│   │   │   └── frameio_test.go
│   │   ├── freshbooks/
│   │   │   ├── freshbooks.go
│   │   │   ├── freshbooks_integration_test.go
│   │   │   └── freshbooks_test.go
│   │   ├── freshdesk/
│   │   │   ├── freshdesk.go
│   │   │   ├── freshdesk_integration_test.go
│   │   │   └── freshdesk_test.go
│   │   ├── front/
│   │   │   ├── front.go
│   │   │   ├── front_integration_test.go
│   │   │   └── front_test.go
│   │   ├── ftp/
│   │   │   ├── ftp.go
│   │   │   ├── ftp_integration_test.go
│   │   │   └── ftp_test.go
│   │   ├── fulcrum/
│   │   │   ├── fulcrum.go
│   │   │   ├── fulcrum_integration_test.go
│   │   │   └── fulcrum_test.go
│   │   ├── fullstory/
│   │   │   ├── v1/
│   │   │   │   ├── fullstory.go
│   │   │   │   ├── fullstory_integration_test.go
│   │   │   │   └── fullstory_test.go
│   │   │   └── v2/
│   │   │       ├── fullstory_integration_test.go
│   │   │       ├── fullstory_v2.go
│   │   │       └── fullstory_v2_test.go
│   │   ├── fxmarket/
│   │   │   ├── fxmarket.go
│   │   │   ├── fxmarket_integration_test.go
│   │   │   └── fxmarket_test.go
│   │   ├── gcp/
│   │   │   ├── gcp.go
│   │   │   ├── gcp_integration_test.go
│   │   │   └── gcp_test.go
│   │   ├── gcpapplicationdefaultcredentials/
│   │   │   ├── gcpapplicationdefaultcredentials.go
│   │   │   ├── gcpapplicationdefaultcredentials_integration_test.go
│   │   │   └── gcpapplicationdefaultcredentials_test.go
│   │   ├── geckoboard/
│   │   │   ├── geckoboard.go
│   │   │   ├── geckoboard_integration_test.go
│   │   │   └── geckoboard_test.go
│   │   ├── gemini/
│   │   │   ├── gemini.go
│   │   │   ├── gemini_integration_test.go
│   │   │   └── gemini_test.go
│   │   ├── generic/
│   │   │   ├── generic.go
│   │   │   ├── generic_integration_test.go
│   │   │   └── generic_test.go
│   │   ├── gengo/
│   │   │   ├── gengo.go
│   │   │   ├── gengo_integration_test.go
│   │   │   └── gengo_test.go
│   │   ├── geoapify/
│   │   │   ├── geoapify.go
│   │   │   ├── geoapify_integration_test.go
│   │   │   └── geoapify_test.go
│   │   ├── geocode/
│   │   │   ├── geocode.go
│   │   │   ├── geocode_integration_test.go
│   │   │   └── geocode_test.go
│   │   ├── geocodify/
│   │   │   ├── geocodify.go
│   │   │   ├── geocodify_integration_test.go
│   │   │   └── geocodify_test.go
│   │   ├── geocodio/
│   │   │   ├── geocodio.go
│   │   │   ├── geocodio_integration_test.go
│   │   │   └── geocodio_test.go
│   │   ├── geoipifi/
│   │   │   ├── geoipifi.go
│   │   │   ├── geoipifi_integration_test.go
│   │   │   └── geoipifi_test.go
│   │   ├── getemail/
│   │   │   ├── getemail.go
│   │   │   ├── getemail_integration_test.go
│   │   │   └── getemail_test.go
│   │   ├── getemails/
│   │   │   ├── getemails.go
│   │   │   ├── getemails_integration_test.go
│   │   │   └── getemails_test.go
│   │   ├── getgeoapi/
│   │   │   ├── getgeoapi.go
│   │   │   ├── getgeoapi_integration_test.go
│   │   │   └── getgeoapi_test.go
│   │   ├── getgist/
│   │   │   ├── getgist.go
│   │   │   ├── getgist_integration_test.go
│   │   │   └── getgist_test.go
│   │   ├── getresponse/
│   │   │   ├── getresponse.go
│   │   │   ├── getresponse_integration_test.go
│   │   │   └── getresponse_test.go
│   │   ├── getsandbox/
│   │   │   ├── getsandbox.go
│   │   │   ├── getsandbox_integration_test.go
│   │   │   └── getsandbox_test.go
│   │   ├── github/
│   │   │   ├── v1/
│   │   │   │   ├── github_integration_test.go
│   │   │   │   ├── github_old.go
│   │   │   │   └── github_old_test.go
│   │   │   └── v2/
│   │   │       ├── github.go
│   │   │       ├── github_integration_test.go
│   │   │       └── github_test.go
│   │   ├── github_oauth2/
│   │   │   ├── github_oauth2.go
│   │   │   └── github_oauth2_test.go
│   │   ├── githubapp/
│   │   │   ├── githubapp.go
│   │   │   ├── githubapp_integration_test.go
│   │   │   └── githubapp_test.go
│   │   ├── gitlab/
│   │   │   ├── v1/
│   │   │   │   ├── gitlab.go
│   │   │   │   ├── gitlab_integration_test.go
│   │   │   │   └── gitlab_v1_test.go
│   │   │   ├── v2/
│   │   │   │   ├── gitlab_integration_test.go
│   │   │   │   ├── gitlab_v2.go
│   │   │   │   └── gitlab_v2_test.go
│   │   │   └── v3/
│   │   │       ├── gitlab_v3.go
│   │   │       ├── gitlab_v3_integration_test.go
│   │   │       └── gitlab_v3_test.go
│   │   ├── gitter/
│   │   │   ├── gitter.go
│   │   │   ├── gitter_integration_test.go
│   │   │   └── gitter_test.go
│   │   ├── glassnode/
│   │   │   ├── glassnode.go
│   │   │   ├── glassnode_integration_test.go
│   │   │   └── glassnode_test.go
│   │   ├── gocanvas/
│   │   │   ├── gocanvas.go
│   │   │   ├── gocanvas_integration_test.go
│   │   │   └── gocanvas_test.go
│   │   ├── gocardless/
│   │   │   ├── gocardless.go
│   │   │   ├── gocardless_integration_test.go
│   │   │   └── gocardless_test.go
│   │   ├── godaddy/
│   │   │   ├── v1/
│   │   │   │   ├── godaddy.go
│   │   │   │   ├── godaddy_integration_test.go
│   │   │   │   └── godaddy_test.go
│   │   │   └── v2/
│   │   │       ├── godaddy.go
│   │   │       ├── godaddy_integration_test.go
│   │   │       └── godaddy_test.go
│   │   ├── goodday/
│   │   │   ├── goodday.go
│   │   │   ├── goodday_integration_test.go
│   │   │   └── goodday_test.go
│   │   ├── googlegemini/
│   │   │   ├── googlegemini.go
│   │   │   ├── googlegemini_integration_test.go
│   │   │   └── googlegemini_test.go
│   │   ├── googleoauth2/
│   │   │   ├── googleoauth2_access_token.go
│   │   │   ├── googleoauth2_access_token_test.go
│   │   │   └── googleoauth2_integration_test.go
│   │   ├── grafana/
│   │   │   ├── grafana.go
│   │   │   ├── grafana_integration_test.go
│   │   │   └── grafana_test.go
│   │   ├── grafanaserviceaccount/
│   │   │   ├── grafanaserviceaccount.go
│   │   │   ├── grafanaserviceaccount_integration_test.go
│   │   │   └── grafanaserviceaccount_test.go
│   │   ├── graphcms/
│   │   │   ├── graphcms.go
│   │   │   ├── graphcms_integration_test.go
│   │   │   └── graphcms_test.go
│   │   ├── graphhopper/
│   │   │   ├── graphhopper.go
│   │   │   ├── graphhopper_integration_test.go
│   │   │   └── graphhopper_test.go
│   │   ├── groovehq/
│   │   │   ├── groovehq.go
│   │   │   ├── groovehq_integration_test.go
│   │   │   └── groovehq_test.go
│   │   ├── groq/
│   │   │   ├── groq.go
│   │   │   ├── groq_integration_test.go
│   │   │   └── groq_test.go
│   │   ├── gtmetrix/
│   │   │   ├── gtmetrix.go
│   │   │   ├── gtmetrix_integration_test.go
│   │   │   └── gtmetrix_test.go
│   │   ├── guardianapi/
│   │   │   ├── guardianapi.go
│   │   │   ├── guardianapi_integration_test.go
│   │   │   └── guardianapi_test.go
│   │   ├── gumroad/
│   │   │   ├── gumroad.go
│   │   │   ├── gumroad_integration_test.go
│   │   │   └── gumroad_test.go
│   │   ├── guru/
│   │   │   ├── guru.go
│   │   │   ├── guru_integration_test.go
│   │   │   └── guru_test.go
│   │   ├── gyazo/
│   │   │   ├── gyazo.go
│   │   │   ├── gyazo_integration_test.go
│   │   │   └── gyazo_test.go
│   │   ├── happyscribe/
│   │   │   ├── happyscribe.go
│   │   │   ├── happyscribe_integration_test.go
│   │   │   └── happyscribe_test.go
│   │   ├── harness/
│   │   │   ├── harness.go
│   │   │   ├── harness_integration_test.go
│   │   │   └── harness_test.go
│   │   ├── harvest/
│   │   │   ├── harvest.go
│   │   │   ├── harvest_integration_test.go
│   │   │   └── harvest_test.go
│   │   ├── hashicorpvaultauth/
│   │   │   ├── hashicorpvaultauth.go
│   │   │   ├── hashicorpvaultauth_integration_test.go
│   │   │   └── hashicorpvaultauth_test.go
│   │   ├── hasura/
│   │   │   ├── hasura.go
│   │   │   ├── hasura_integration_test.go
│   │   │   └── hasura_test.go
│   │   ├── hellosign/
│   │   │   ├── hellosign.go
│   │   │   ├── hellosign_integration_test.go
│   │   │   └── hellosign_test.go
│   │   ├── helpcrunch/
│   │   │   ├── helpcrunch.go
│   │   │   ├── helpcrunch_integration_test.go
│   │   │   └── helpcrunch_test.go
│   │   ├── helpscout/
│   │   │   ├── helpscout.go
│   │   │   ├── helpscout_integration_test.go
│   │   │   └── helpscout_test.go
│   │   ├── hereapi/
│   │   │   ├── hereapi.go
│   │   │   ├── hereapi_integration_test.go
│   │   │   └── hereapi_test.go
│   │   ├── heroku/
│   │   │   ├── v1/
│   │   │   │   ├── heroku.go
│   │   │   │   ├── heroku_integration_test.go
│   │   │   │   └── heroku_test.go
│   │   │   └── v2/
│   │   │       ├── heroku.go
│   │   │       ├── heroku_integration_test.go
│   │   │       └── heroku_test.go
│   │   ├── hive/
│   │   │   ├── hive.go
│   │   │   ├── hive_integration_test.go
│   │   │   └── hive_test.go
│   │   ├── hiveage/
│   │   │   ├── hiveage.go
│   │   │   ├── hiveage_integration_test.go
│   │   │   └── hiveage_test.go
│   │   ├── holidayapi/
│   │   │   ├── holidayapi.go
│   │   │   ├── holidayapi_integration_test.go
│   │   │   └── holidayapi_test.go
│   │   ├── holistic/
│   │   │   ├── holistic.go
│   │   │   ├── holistic_integration_test.go
│   │   │   └── holistic_test.go
│   │   ├── honeycomb/
│   │   │   ├── honeycomb.go
│   │   │   ├── honeycomb_integration_test.go
│   │   │   └── honeycomb_test.go
│   │   ├── host/
│   │   │   ├── host.go
│   │   │   ├── host_integration_test.go
│   │   │   └── host_test.go
│   │   ├── html2pdf/
│   │   │   ├── html2pdf.go
│   │   │   ├── html2pdf_integration_test.go
│   │   │   └── html2pdf_test.go
│   │   ├── http.go
│   │   ├── http_test.go
│   │   ├── hubspot_apikey/
│   │   │   ├── v1/
│   │   │   │   ├── apikey.go
│   │   │   │   ├── apikey_integration_test.go
│   │   │   │   └── apikey_test.go
│   │   │   └── v2/
│   │   │       ├── apikey.go
│   │   │       ├── apikey_integration_test.go
│   │   │       └── apikey_test.go
│   │   ├── huggingface/
│   │   │   ├── huggingface.go
│   │   │   ├── huggingface_integration_test.go
│   │   │   └── huggingface_test.go
│   │   ├── humanity/
│   │   │   ├── humanity.go
│   │   │   ├── humanity_integration_test.go
│   │   │   └── humanity_test.go
│   │   ├── hunter/
│   │   │   ├── hunter.go
│   │   │   ├── hunter_integration_test.go
│   │   │   └── hunter_test.go
│   │   ├── hybiscus/
│   │   │   ├── hybiscus.go
│   │   │   ├── hybiscus_integration_test.go
│   │   │   └── hybiscus_test.go
│   │   ├── hypertrack/
│   │   │   ├── hypertrack.go
│   │   │   ├── hypertrack_integration_test.go
│   │   │   └── hypertrack_test.go
│   │   ├── ibmclouduserkey/
│   │   │   ├── ibmclouduserkey.go
│   │   │   ├── ibmclouduserkey_integration_test.go
│   │   │   └── ibmclouduserkey_test.go
│   │   ├── iconfinder/
│   │   │   ├── iconfinder.go
│   │   │   ├── iconfinder_integreation_test.go
│   │   │   └── iconfinder_test.go
│   │   ├── iexapis/
│   │   │   ├── iexapis.go
│   │   │   ├── iexapis_integration_test.go
│   │   │   └── iexapis_test.go
│   │   ├── iexcloud/
│   │   │   ├── iexcloud.go
│   │   │   ├── iexcloud_integration_test.go
│   │   │   └── iexcloud_test.go
│   │   ├── imagekit/
│   │   │   ├── imagekit.go
│   │   │   ├── imagekit_integration_test.go
│   │   │   └── imagekit_test.go
│   │   ├── imagga/
│   │   │   ├── imagga.go
│   │   │   ├── imagga_integration_test.go
│   │   │   └── imagga_test.go
│   │   ├── impala/
│   │   │   ├── impala.go
│   │   │   ├── impala_integration_test.go
│   │   │   └── impala_test.go
│   │   ├── infura/
│   │   │   ├── infura.go
│   │   │   ├── infura_integration_test.go
│   │   │   └── infura_test.go
│   │   ├── insightly/
│   │   │   ├── insightly.go
│   │   │   ├── insightly_integration_test.go
│   │   │   └── insightly_test.go
│   │   ├── instabot/
│   │   │   ├── instabot.go
│   │   │   ├── instabot_integration_test.go
│   │   │   └── instabot_test.go
│   │   ├── instamojo/
│   │   │   ├── instamojo.go
│   │   │   ├── instamojo_integration_test.go
│   │   │   └── instamojo_test.go
│   │   ├── intercom/
│   │   │   ├── intercom.go
│   │   │   ├── intercom_integration_test.go
│   │   │   └── intercom_test.go
│   │   ├── interseller/
│   │   │   ├── interseller.go
│   │   │   ├── interseller_integration_test.go
│   │   │   └── interseller_test.go
│   │   ├── intra42/
│   │   │   ├── intra42.go
│   │   │   ├── intra42_integration_test.go
│   │   │   └── intra42_test.go
│   │   ├── intrinio/
│   │   │   ├── intrinio.go
│   │   │   ├── intrinio_integration_test.go
│   │   │   └── intrinio_test.go
│   │   ├── invoiceocean/
│   │   │   ├── invoiceocean.go
│   │   │   ├── invoiceocean_integration_test.go
│   │   │   └── invoiceocean_test.go
│   │   ├── ip2location/
│   │   │   ├── ip2location.go
│   │   │   ├── ip2location_integration_test.go
│   │   │   └── ip2location_test.go
│   │   ├── ipapi/
│   │   │   ├── ipapi.go
│   │   │   ├── ipapi_integration_test.go
│   │   │   └── ipapi_test.go
│   │   ├── ipgeolocation/
│   │   │   ├── ipgeolocation.go
│   │   │   ├── ipgeolocation_integration_test.go
│   │   │   └── ipgeolocation_test.go
│   │   ├── ipinfo/
│   │   │   ├── ipinfo.go
│   │   │   ├── ipinfo_integration_test.go
│   │   │   └── ipinfo_test.go
│   │   ├── ipinfodb/
│   │   │   ├── ipinfodb.go
│   │   │   ├── ipinfodb_integration_test.go
│   │   │   └── ipinfodb_test.go
│   │   ├── ipquality/
│   │   │   ├── ipquality.go
│   │   │   ├── ipquality_integration_test.go
│   │   │   └── ipquality_test.go
│   │   ├── ipstack/
│   │   │   ├── ipstack.go
│   │   │   ├── ipstack_integration_test.go
│   │   │   └── ipstack_test.go
│   │   ├── jdbc/
│   │   │   ├── jdbc.go
│   │   │   ├── jdbc_integration_test.go
│   │   │   ├── jdbc_test.go
│   │   │   ├── models.go
│   │   │   ├── mysql.go
│   │   │   ├── mysql_integration_test.go
│   │   │   ├── mysql_test.go
│   │   │   ├── postgres.go
│   │   │   ├── postgres_integration_test.go
│   │   │   ├── postgres_test.go
│   │   │   ├── sqlserver.go
│   │   │   ├── sqlserver_integration_test.go
│   │   │   └── sqlserver_test.go
│   │   ├── jiratoken/
│   │   │   ├── v1/
│   │   │   │   ├── jiratoken.go
│   │   │   │   ├── jiratoken_integration_test.go
│   │   │   │   └── jiratoken_test.go
│   │   │   └── v2/
│   │   │       ├── jiratoken_v2.go
│   │   │       ├── jiratoken_v2_integration_test.go
│   │   │       └── jiratoken_v2_test.go
│   │   ├── jotform/
│   │   │   ├── jotform.go
│   │   │   ├── jotform_integration_test.go
│   │   │   └── jotform_test.go
│   │   ├── jumpcloud/
│   │   │   ├── jumpcloud.go
│   │   │   ├── jumpcloud_integration_test.go
│   │   │   └── jumpcloud_test.go
│   │   ├── jupiterone/
│   │   │   ├── jupiterone.go
│   │   │   ├── jupiterone_integration_test.go
│   │   │   └── jupiterone_test.go
│   │   ├── juro/
│   │   │   ├── juro.go
│   │   │   ├── juro_integration_test.go
│   │   │   └── juro_test.go
│   │   ├── jwt/
│   │   │   ├── jwt.go
│   │   │   └── jwt_test.go
│   │   ├── kanban/
│   │   │   ├── kanban.go
│   │   │   ├── kanban_integration_test.go
│   │   │   └── kanban_test.go
│   │   ├── kanbantool/
│   │   │   ├── kanbantool.go
│   │   │   ├── kanbantool_integration_test.go
│   │   │   └── kanbantool_test.go
│   │   ├── karmacrm/
│   │   │   ├── karmacrm.go
│   │   │   ├── karmacrm_integration_test.go
│   │   │   └── karmacrm_test.go
│   │   ├── keenio/
│   │   │   ├── keenio.go
│   │   │   ├── keenio_integration_test.go
│   │   │   └── keenio_test.go
│   │   ├── kickbox/
│   │   │   ├── kickbox.go
│   │   │   ├── kickbox_integration_test.go
│   │   │   └── kickbox_test.go
│   │   ├── klaviyo/
│   │   │   ├── klaviyo.go
│   │   │   ├── klaviyo_integration_test.go
│   │   │   └── klaviyo_test.go
│   │   ├── klipfolio/
│   │   │   ├── klipfolio.go
│   │   │   ├── klipfolio_integration_test.go
│   │   │   └── klipfolio_test.go
│   │   ├── knapsackpro/
│   │   │   ├── knapsackpro.go
│   │   │   ├── knapsackpro_integration_test.go
│   │   │   └── knapsackpro_test.go
│   │   ├── kontent/
│   │   │   ├── kontent.go
│   │   │   ├── kontent_integration_test.go
│   │   │   └── kontent_test.go
│   │   ├── kraken/
│   │   │   ├── kraken.go
│   │   │   ├── kraken_integration_test.go
│   │   │   └── kraken_test.go
│   │   ├── kucoin/
│   │   │   ├── kucoin.go
│   │   │   ├── kucoin_integration_test.go
│   │   │   └── kucoin_test.go
│   │   ├── kylas/
│   │   │   ├── kylas.go
│   │   │   ├── kylas_integration_test.go
│   │   │   └── kylas_test.go
│   │   ├── langfuse/
│   │   │   ├── langfuse.go
│   │   │   ├── langfuse_integration_test.go
│   │   │   └── langfuse_test.go
│   │   ├── langsmith/
│   │   │   ├── langsmith.go
│   │   │   ├── langsmith_integration_test.go
│   │   │   └── langsmith_test.go
│   │   ├── languagelayer/
│   │   │   ├── languagelayer.go
│   │   │   ├── languagelayer_integration_test.go
│   │   │   └── languagelayer_test.go
│   │   ├── larksuite/
│   │   │   ├── larksuite.go
│   │   │   ├── larksuite_integration_test.go
│   │   │   └── larksuite_test.go
│   │   ├── larksuiteapikey/
│   │   │   ├── larksuiteapikey.go
│   │   │   ├── larksuiteapikey_integration_test.go
│   │   │   └── larksuiteapikey_test.go
│   │   ├── launchdarkly/
│   │   │   ├── launchdarkly.go
│   │   │   ├── launchdarkly_integration_test.go
│   │   │   └── launchdarkly_test.go
│   │   ├── ldap/
│   │   │   ├── ldap.go
│   │   │   ├── ldap_integration_test.go
│   │   │   └── ldap_test.go
│   │   ├── leadfeeder/
│   │   │   ├── leadfeeder.go
│   │   │   ├── leadfeeder_integration_test.go
│   │   │   └── leadfeeder_test.go
│   │   ├── lemlist/
│   │   │   ├── lemlist.go
│   │   │   ├── lemlist_integration_test.go
│   │   │   └── lemlist_test.go
│   │   ├── lemonsqueezy/
│   │   │   ├── lemonsqueezy.go
│   │   │   ├── lemonsqueezy_integration_test.go
│   │   │   └── lemonsqueezy_test.go
│   │   ├── lendflow/
│   │   │   ├── lendflow.go
│   │   │   ├── lendflow_integration_test.go
│   │   │   └── lendflow_test.go
│   │   ├── lessannoyingcrm/
│   │   │   ├── lessannoyingcrm.go
│   │   │   ├── lessannoyingcrm_integration_test.go
│   │   │   └── lessannoyingcrm_test.go
│   │   ├── lexigram/
│   │   │   ├── lexigram.go
│   │   │   ├── lexigram_integration_test.go
│   │   │   └── lexigram_test.go
│   │   ├── linearapi/
│   │   │   ├── linearapi.go
│   │   │   ├── linearapi_integration_test.go
│   │   │   └── linearapi_test.go
│   │   ├── linemessaging/
│   │   │   ├── linemessaging.go
│   │   │   ├── linemessaging_integration_test.go
│   │   │   └── linemessaging_test.go
│   │   ├── linenotify/
│   │   │   ├── linenotify.go
│   │   │   ├── linenotify_integration_test.go
│   │   │   └── linenotify_test.go
│   │   ├── linkpreview/
│   │   │   ├── linkpreview.go
│   │   │   ├── linkpreview_integration_test.go
│   │   │   └── linkpreview_test.go
│   │   ├── liveagent/
│   │   │   ├── liveagent.go
│   │   │   ├── liveagent_integration_test.go
│   │   │   └── liveagent_test.go
│   │   ├── livestorm/
│   │   │   ├── livestorm.go
│   │   │   ├── livestorm_integration_test.go
│   │   │   └── livestorm_test.go
│   │   ├── loadmill/
│   │   │   ├── loadmill.go
│   │   │   ├── loadmill_integration_test.go
│   │   │   └── loadmill_test.go
│   │   ├── lob/
│   │   │   ├── lob.go
│   │   │   ├── lob_integration_test.go
│   │   │   └── lob_test.go
│   │   ├── locationiq/
│   │   │   ├── locationiq.go
│   │   │   ├── locationiq_integration_test.go
│   │   │   └── locationiq_test.go
│   │   ├── loggly/
│   │   │   ├── loggly.go
│   │   │   ├── loggly_integration_test.go
│   │   │   └── loggly_test.go
│   │   ├── loginradius/
│   │   │   ├── loginradius.go
│   │   │   ├── loginradius_integration_test.go
│   │   │   └── loginradius_test.go
│   │   ├── logzio/
│   │   │   ├── logzio.go
│   │   │   ├── logzio_integration_test.go
│   │   │   └── logzio_test.go
│   │   ├── lokalisetoken/
│   │   │   ├── lokalisetoken.go
│   │   │   ├── lokalisetoken_integration_test.go
│   │   │   └── lokalisetoken_test.go
│   │   ├── loyverse/
│   │   │   ├── loyverse.go
│   │   │   ├── loyverse_integration_test.go
│   │   │   └── loyverse_test.go
│   │   ├── lunchmoney/
│   │   │   ├── lunchmoney.go
│   │   │   ├── lunchmoney_integration_test.go
│   │   │   └── lunchmoney_test.go
│   │   ├── luno/
│   │   │   ├── luno.go
│   │   │   ├── luno_integration_test.go
│   │   │   └── luno_test.go
│   │   ├── m3o/
│   │   │   ├── m3o.go
│   │   │   ├── m3o_integration_test.go
│   │   │   └── m3o_test.go
│   │   ├── madkudu/
│   │   │   ├── madkudu.go
│   │   │   ├── madkudu_integration_test.go
│   │   │   └── madkudu_test.go
│   │   ├── magicbell/
│   │   │   ├── magicbell.go
│   │   │   ├── magicbell_integration_test.go
│   │   │   └── magicbell_test.go
│   │   ├── magnetic/
│   │   │   ├── magnetic.go
│   │   │   ├── magnetic_integration_test.go
│   │   │   └── magnetic_test.go
│   │   ├── mailboxlayer/
│   │   │   ├── mailboxlayer.go
│   │   │   ├── mailboxlayer_integration_test.go
│   │   │   └── mailboxlayer_test.go
│   │   ├── mailchimp/
│   │   │   ├── mailchimp.go
│   │   │   ├── mailchimp_integration_test.go
│   │   │   └── mailchimp_test.go
│   │   ├── mailerlite/
│   │   │   ├── mailerlite.go
│   │   │   ├── mailerlite_integration_test.go
│   │   │   └── mailerlite_test.go
│   │   ├── mailgun/
│   │   │   ├── mailgun.go
│   │   │   ├── mailgun_integration_test.go
│   │   │   └── mailgun_test.go
│   │   ├── mailjetbasicauth/
│   │   │   ├── mailjetbasicauth.go
│   │   │   ├── mailjetbasicauth_integration_test.go
│   │   │   └── mailjetbasicauth_test.go
│   │   ├── mailjetsms/
│   │   │   ├── mailjetsms.go
│   │   │   ├── mailjetsms_integration_test.go
│   │   │   └── mailjetsms_test.go
│   │   ├── mailmodo/
│   │   │   ├── mailmodo.go
│   │   │   ├── mailmodo_integration_test.go
│   │   │   └── mailmodo_test.go
│   │   ├── mailsac/
│   │   │   ├── mailsac.go
│   │   │   ├── mailsac_integration_test.go
│   │   │   └── mailsac_test.go
│   │   ├── mandrill/
│   │   │   ├── mandrill.go
│   │   │   ├── mandrill_integration_test.go
│   │   │   └── mandrill_test.go
│   │   ├── manifest/
│   │   │   ├── manifest.go
│   │   │   ├── manifest_integration_test.go
│   │   │   └── manifest_test.go
│   │   ├── mapbox/
│   │   │   ├── mapbox.go
│   │   │   ├── mapbox_integration_test.go
│   │   │   └── mapbox_test.go
│   │   ├── mapquest/
│   │   │   ├── mapquest.go
│   │   │   ├── mapquest_integration_test.go
│   │   │   └── mapquest_test.go
│   │   ├── marketstack/
│   │   │   ├── marketstack.go
│   │   │   ├── marketstack_integration_test.go
│   │   │   └── marketstack_test.go
│   │   ├── mattermostpersonaltoken/
│   │   │   ├── mattermostpersonaltoken.go
│   │   │   ├── mattermostpersonaltoken_integration_test.go
│   │   │   └── mattermostpersonaltoken_test.go
│   │   ├── mavenlink/
│   │   │   ├── mavenlink.go
│   │   │   ├── mavenlink_integration_test.go
│   │   │   └── mavenlink_test.go
│   │   ├── maxmindlicense/
│   │   │   ├── v1/
│   │   │   │   ├── maxmindlicense.go
│   │   │   │   ├── maxmindlicense_integration_test.go
│   │   │   │   └── maxmindlicense_test.go
│   │   │   └── v2/
│   │   │       ├── maxmindlicense_v2.go
│   │   │       ├── maxmindlicense_v2_integration_test.go
│   │   │       └── maxmindlicense_v2_test.go
│   │   ├── meaningcloud/
│   │   │   ├── meaningcloud.go
│   │   │   ├── meaningcloud_integration_test.go
│   │   │   └── meaningcloud_test.go
│   │   ├── mediastack/
│   │   │   ├── mediastack.go
│   │   │   ├── mediastack_integration_test.go
│   │   │   └── mediastack_test.go
│   │   ├── meistertask/
│   │   │   ├── meistertask.go
│   │   │   ├── meistertask_integration_test.go
│   │   │   └── meistertask_test.go
│   │   ├── meraki/
│   │   │   ├── meraki.go
│   │   │   ├── meraki_integration_test.go
│   │   │   └── meraki_test.go
│   │   ├── mesibo/
│   │   │   ├── mesibo.go
│   │   │   ├── mesibo_integration_test.go
│   │   │   └── mesibo_test.go
│   │   ├── messagebird/
│   │   │   ├── messagebird.go
│   │   │   ├── messagebird_integration_test.go
│   │   │   └── messagebird_test.go
│   │   ├── metaapi/
│   │   │   ├── metaapi.go
│   │   │   ├── metaapi_integration_test.go
│   │   │   └── metaapi_test.go
│   │   ├── metabase/
│   │   │   ├── metabase.go
│   │   │   ├── metabase_integration_test.go
│   │   │   └── metabase_test.go
│   │   ├── metrilo/
│   │   │   ├── metrilo.go
│   │   │   ├── metrilo_integration_test.go
│   │   │   └── metrilo_test.go
│   │   ├── microsoftteamswebhook/
│   │   │   ├── microsoftteamswebhook.go
│   │   │   ├── microsoftteamswebhook_integration_test.go
│   │   │   └── microsoftteamswebhook_test.go
│   │   ├── mindmeister/
│   │   │   ├── mindmeister.go
│   │   │   ├── mindmeister_integration_test.go
│   │   │   └── mindmeister_test.go
│   │   ├── miro/
│   │   │   ├── miro.go
│   │   │   ├── miro_integration_test.go
│   │   │   └── miro_test.go
│   │   ├── mite/
│   │   │   ├── mite.go
│   │   │   ├── mite_integration_test.go
│   │   │   └── mite_test.go
│   │   ├── mixmax/
│   │   │   ├── mixmax.go
│   │   │   ├── mixmax_integration_test.go
│   │   │   └── mixmax_test.go
│   │   ├── mixpanel/
│   │   │   ├── mixpanel.go
│   │   │   ├── mixpanel_integration_test.go
│   │   │   └── mixpanel_test.go
│   │   ├── mockaroo/
│   │   │   ├── mockaroo.go
│   │   │   ├── mockaroo_integration_test.go
│   │   │   └── mockaroo_test.go
│   │   ├── moderation/
│   │   │   ├── moderation.go
│   │   │   ├── moderation_integration_test.go
│   │   │   └── moderation_test.go
│   │   ├── monday/
│   │   │   ├── monday.go
│   │   │   ├── monday_integration_test.go
│   │   │   └── monday_test.go
│   │   ├── mongodb/
│   │   │   ├── mongodb.go
│   │   │   ├── mongodb_integration_test.go
│   │   │   └── mongodb_test.go
│   │   ├── monkeylearn/
│   │   │   ├── monkeylearn.go
│   │   │   ├── monkeylearn_integration_test.go
│   │   │   └── monkeylearn_test.go
│   │   ├── moonclerk/
│   │   │   ├── moonclerk.go
│   │   │   ├── moonclerk_integration_test.go
│   │   │   └── moonclerk_test.go
│   │   ├── moosend/
│   │   │   ├── moosend.go
│   │   │   ├── moosend_integration_test.go
│   │   │   └── moosend_test.go
│   │   ├── moralis/
│   │   │   ├── moralis.go
│   │   │   ├── moralis_integration_test.go
│   │   │   └── moralis_test.go
│   │   ├── mrticktock/
│   │   │   ├── mrticktock.go
│   │   │   ├── mrticktock_test.go
│   │   │   └── mrticktok_integration_test.go
│   │   ├── multi_part_credential_provider.go
│   │   ├── multi_part_credential_provider_test.go
│   │   ├── mux/
│   │   │   ├── mux.go
│   │   │   ├── mux_integration_test.go
│   │   │   └── mux_test.go
│   │   ├── myfreshworks/
│   │   │   ├── myfreshworks.go
│   │   │   ├── myfreshworks_integration_test.go
│   │   │   └── myfreshworks_test.go
│   │   ├── myintervals/
│   │   │   ├── myintervals.go
│   │   │   ├── myintervals_integration_test.go
│   │   │   └── myintervals_test.go
│   │   ├── nasdaqdatalink/
│   │   │   ├── nasdaqdatalink.go
│   │   │   ├── nasdaqdatalink_integration_test.go
│   │   │   └── nasdaqdatalink_test.go
│   │   ├── nethunt/
│   │   │   ├── nethunt.go
│   │   │   ├── nethunt_integration_test.go
│   │   │   └── nethunt_test.go
│   │   ├── netlify/
│   │   │   ├── v1/
│   │   │   │   ├── netlify_v1.go
│   │   │   │   ├── netlify_v1_integration_test.go
│   │   │   │   └── netlify_v1_test.go
│   │   │   └── v2/
│   │   │       ├── netlify_v2.go
│   │   │       ├── netlify_v2_integration_test.go
│   │   │       └── netlify_v2_test.go
│   │   ├── netsuite/
│   │   │   ├── netsuite.go
│   │   │   ├── netsuite_integration_test.go
│   │   │   └── netsuite_test.go
│   │   ├── neutrinoapi/
│   │   │   ├── neutrinoapi.go
│   │   │   ├── neutrinoapi_integration_test.go
│   │   │   └── neutrinoapi_test.go
│   │   ├── newrelicpersonalapikey/
│   │   │   ├── newrelicpersonalapikey.go
│   │   │   ├── newrelicpersonalapikey_integration_test.go
│   │   │   └── newrelicpersonalapikey_test.go
│   │   ├── newsapi/
│   │   │   ├── newsapi.go
│   │   │   ├── newsapi_integration_test.go
│   │   │   └── newsapi_test.go
│   │   ├── newscatcher/
│   │   │   ├── newscatcher.go
│   │   │   ├── newscatcher_integration_test.go
│   │   │   └── newscatcher_test.go
│   │   ├── nexmoapikey/
│   │   │   ├── nexmoapikey.go
│   │   │   ├── nexmoapikey_integration_test.go
│   │   │   └── nexmoapikey_test.go
│   │   ├── nftport/
│   │   │   ├── nftport.go
│   │   │   ├── nftport_integration_test.go
│   │   │   └── nftport_test.go
│   │   ├── ngc/
│   │   │   ├── ngc.go
│   │   │   ├── ngc_integration_test.go
│   │   │   └── ngc_test.go
│   │   ├── ngrok/
│   │   │   ├── ngrok.go
│   │   │   ├── ngrok_integration_test.go
│   │   │   └── ngrok_test.go
│   │   ├── nicereply/
│   │   │   ├── nicereply.go
│   │   │   ├── nicereply_integration_test.go
│   │   │   └── nicereply_test.go
│   │   ├── nightfall/
│   │   │   ├── nightfall.go
│   │   │   ├── nightfall_integration_test.go
│   │   │   └── nightfall_test.go
│   │   ├── nimble/
│   │   │   ├── nimble.go
│   │   │   ├── nimble_integration_test.go
│   │   │   └── nimble_test.go
│   │   ├── noticeable/
│   │   │   ├── noticeable.go
│   │   │   ├── noticeable_integration_test.go
│   │   │   └── noticeable_test.go
│   │   ├── notion/
│   │   │   ├── notion.go
│   │   │   ├── notion_integration_test.go
│   │   │   └── notion_test.go
│   │   ├── nozbeteams/
│   │   │   ├── nozbeteams.go
│   │   │   ├── nozbeteams_integration_test.go
│   │   │   └── nozbeteams_test.go
│   │   ├── npmtoken/
│   │   │   ├── npmtoken.go
│   │   │   ├── npmtoken_integration_test.go
│   │   │   └── npmtoken_test.go
│   │   ├── npmtokenv2/
│   │   │   ├── npmtokenv2.go
│   │   │   ├── npmtokenv2_integration_test.go
│   │   │   └── npmtokenv2_test.go
│   │   ├── nugetapikey/
│   │   │   ├── nugetapikey.go
│   │   │   ├── nugetapikey_integration_test.go
│   │   │   └── nugetapikey_test.go
│   │   ├── numverify/
│   │   │   ├── numverify.go
│   │   │   ├── numverify_integration_test.go
│   │   │   └── numverify_test.go
│   │   ├── nutritionix/
│   │   │   ├── nutritionix.go
│   │   │   ├── nutritionix_integration_test.go
│   │   │   └── nutritionix_test.go
│   │   ├── nvapi/
│   │   │   ├── nvapi.go
│   │   │   ├── nvapi_integration_test.go
│   │   │   └── nvapi_test.go
│   │   ├── nylas/
│   │   │   ├── nylas.go
│   │   │   ├── nylas_integration_test.go
│   │   │   └── nylas_test.go
│   │   ├── oanda/
│   │   │   ├── oanda.go
│   │   │   ├── oanda_integration_test.go
│   │   │   └── oanda_test.go
│   │   ├── okta/
│   │   │   ├── okta.go
│   │   │   ├── okta_integration_test.go
│   │   │   └── okta_test.go
│   │   ├── omnisend/
│   │   │   ├── omnisend.go
│   │   │   ├── omnisend_integration_test.go
│   │   │   └── omnisend_test.go
│   │   ├── onedesk/
│   │   │   ├── onedesk.go
│   │   │   ├── onedesk_integration_test.go
│   │   │   └── onedesk_test.go
│   │   ├── onelogin/
│   │   │   ├── onelogin.go
│   │   │   ├── onelogin_integration_test.go
│   │   │   └── onelogin_test.go
│   │   ├── onepagecrm/
│   │   │   ├── onepagecrm.go
│   │   │   ├── onepagecrm_integration_test.go
│   │   │   └── onepagecrm_test.go
│   │   ├── onesignal/
│   │   │   ├── onesignal.go
│   │   │   ├── onesignal_integration_test.go
│   │   │   └── onesignal_test.go
│   │   ├── onfleet/
│   │   │   ├── onfleet.go
│   │   │   ├── onfleet_integration_test.go
│   │   │   └── onfleet_test.go
│   │   ├── oopspam/
│   │   │   ├── oopspam.go
│   │   │   ├── oopspam_integration_test.go
│   │   │   └── oopspam_test.go
│   │   ├── openai/
│   │   │   ├── openai.go
│   │   │   ├── openai_integration_test.go
│   │   │   └── openai_test.go
│   │   ├── openaiadmin/
│   │   │   ├── openaiadmin.go
│   │   │   ├── openaiadmin_integration_test.go
│   │   │   └── openaiadmin_test.go
│   │   ├── opencagedata/
│   │   │   ├── opencagedata.go
│   │   │   ├── opencagedata_integration_test.go
│   │   │   └── opencagedata_test.go
│   │   ├── openuv/
│   │   │   ├── openuv.go
│   │   │   ├── openuv_integration_test.go
│   │   │   └── openuv_test.go
│   │   ├── openvpn/
│   │   │   ├── openvpn.go
│   │   │   ├── openvpn_integration_test.go
│   │   │   └── openvpn_test.go
│   │   ├── openweather/
│   │   │   ├── openweather.go
│   │   │   ├── openweather_integration_test.go
│   │   │   └── openweather_test.go
│   │   ├── opsgenie/
│   │   │   ├── opsgenie.go
│   │   │   ├── opsgenie_integration_test.go
│   │   │   └── opsgenie_test.go
│   │   ├── optimizely/
│   │   │   ├── optimizely.go
│   │   │   ├── optimizely_integration_test.go
│   │   │   └── optimizely_test.go
│   │   ├── overloop/
│   │   │   ├── overloop.go
│   │   │   ├── overloop_integration_test.go
│   │   │   └── overloop_test.go
│   │   ├── owlbot/
│   │   │   ├── owlbot.go
│   │   │   ├── owlbot_integration_test.go
│   │   │   └── owlbot_test.go
│   │   ├── packagecloud/
│   │   │   ├── packagecloud.go
│   │   │   ├── packagecloud_integration_test.go
│   │   │   └── packagecloud_test.go
│   │   ├── pagarme/
│   │   │   ├── pagarme.go
│   │   │   ├── pagarme_integration_test.go
│   │   │   └── pagarme_test.go
│   │   ├── pagerdutyapikey/
│   │   │   ├── pagerdutyapikey.go
│   │   │   ├── pagerdutyapikey_integration_test.go
│   │   │   └── pagerdutyapikey_test.go
│   │   ├── pandadoc/
│   │   │   ├── pandadoc.go
│   │   │   ├── pandadoc_integration_test.go
│   │   │   └── pandadoc_test.go
│   │   ├── pandascore/
│   │   │   ├── pandascore.go
│   │   │   ├── pandascore_integration_test.go
│   │   │   └── pandascore_test.go
│   │   ├── paperform/
│   │   │   ├── paperform.go
│   │   │   ├── paperform_integration_test.go
│   │   │   └── paperform_test.go
│   │   ├── paralleldots/
│   │   │   ├── paralleldots.go
│   │   │   ├── paralleldots_integration_test.go
│   │   │   └── paralleldots_test.go
│   │   ├── parsehub/
│   │   │   ├── parsehub.go
│   │   │   ├── parsehub_integration_test.go
│   │   │   └── parsehub_test.go
│   │   ├── parsers/
│   │   │   ├── parsers.go
│   │   │   ├── parsers_integration_test.go
│   │   │   └── parsers_test.go
│   │   ├── parseur/
│   │   │   ├── parseur.go
│   │   │   ├── parseur_integration_test.go
│   │   │   └── parseur_test.go
│   │   ├── partnerstack/
│   │   │   ├── partnerstack.go
│   │   │   ├── partnerstack_integration_test.go
│   │   │   └── partnerstack_test.go
│   │   ├── pastebin/
│   │   │   ├── pastebin.go
│   │   │   ├── pastebin_integration_test.go
│   │   │   └── pastebin_test.go
│   │   ├── paydirtapp/
│   │   │   ├── paydirtapp.go
│   │   │   ├── paydirtapp_integration_test.go
│   │   │   └── paydirtapp_test.go
│   │   ├── paymoapp/
│   │   │   ├── paymoapp.go
│   │   │   ├── paymoapp_integration_test.go
│   │   │   └── paymoapp_test.go
│   │   ├── paymongo/
│   │   │   ├── paymongo.go
│   │   │   ├── paymongo_integration_test.go
│   │   │   └── paymongo_test.go
│   │   ├── paypaloauth/
│   │   │   ├── paypaloauth.go
│   │   │   ├── paypaloauth_integration_test.go
│   │   │   └── paypaloauth_test.go
│   │   ├── paystack/
│   │   │   ├── paystack.go
│   │   │   ├── paystack_integration_test.go
│   │   │   └── paystack_test.go
│   │   ├── pdflayer/
│   │   │   ├── pdflayer.go
│   │   │   ├── pdflayer_integration_test.go
│   │   │   └── pdflayer_test.go
│   │   ├── pdfshift/
│   │   │   ├── pdfshift.go
│   │   │   ├── pdfshift_integration_test.go
│   │   │   └── pdfshift_test.go
│   │   ├── peopledatalabs/
│   │   │   ├── peopledatalabs.go
│   │   │   ├── peopledatalabs_integration_test.go
│   │   │   └── peopledatalabs_test.go
│   │   ├── pepipost/
│   │   │   ├── pepipost.go
│   │   │   ├── pepipost_integration_test.go
│   │   │   └── pepipost_test.go
│   │   ├── percy/
│   │   │   ├── percy.go
│   │   │   ├── percy_integration_test.go
│   │   │   └── percy_test.go
│   │   ├── photoroom/
│   │   │   ├── photoroom.go
│   │   │   ├── photoroom_integration_test.go
│   │   │   └── photoroom_test.go
│   │   ├── phraseaccesstoken/
│   │   │   ├── phraseaccesstoken.go
│   │   │   ├── phraseaccesstoken_integration_test.go
│   │   │   └── phraseaccesstoken_test.go
│   │   ├── pinata/
│   │   │   ├── pinata.go
│   │   │   ├── pinata_integration_test.go
│   │   │   └── pinata_test.go
│   │   ├── pipedream/
│   │   │   ├── pipedream.go
│   │   │   ├── pipedream_integration_test.go
│   │   │   └── pipedream_test.go
│   │   ├── pipedrive/
│   │   │   ├── pipedrive.go
│   │   │   ├── pipedrive_integration_test.go
│   │   │   └── pipedrive_test.go
│   │   ├── pivotaltracker/
│   │   │   ├── pivotaltracker.go
│   │   │   ├── pivotaltracker_integration_test.go
│   │   │   └── pivotaltracker_test.go
│   │   ├── pixabay/
│   │   │   ├── pixabay.go
│   │   │   ├── pixabay_integration_test.go
│   │   │   └── pixabay_test.go
│   │   ├── plaidkey/
│   │   │   ├── plaidkey.go
│   │   │   ├── plaidkey_integration_test.go
│   │   │   └── plaidkey_test.go
│   │   ├── planetscale/
│   │   │   ├── planetscale.go
│   │   │   ├── planetscale_integration_test.go
│   │   │   └── planetscale_test.go
│   │   ├── planetscaledb/
│   │   │   ├── planetscaledb.go
│   │   │   ├── planetscaledb_integration_test.go
│   │   │   └── planetscaledb_test.go
│   │   ├── planviewleankit/
│   │   │   ├── planviewleankit.go
│   │   │   ├── planviewleankit_integration_test.go
│   │   │   └── planviewleankit_test.go
│   │   ├── planyo/
│   │   │   ├── planyo.go
│   │   │   ├── planyo_integration_test.go
│   │   │   └── planyo_test.go
│   │   ├── plivo/
│   │   │   ├── plivo.go
│   │   │   ├── plivo_integration_test.go
│   │   │   └── plivo_test.go
│   │   ├── podio/
│   │   │   ├── podio.go
│   │   │   ├── podio_integration_test.go
│   │   │   └── podio_test.go
│   │   ├── pollsapi/
│   │   │   ├── pollsapi.go
│   │   │   ├── pollsapi_integration_test.go
│   │   │   └── pollsapi_test.go
│   │   ├── poloniex/
│   │   │   ├── poloniex.go
│   │   │   ├── poloniex_integration_test.go
│   │   │   └── poloniex_test.go
│   │   ├── polygon/
│   │   │   ├── polygon.go
│   │   │   ├── polygon_integration_test.go
│   │   │   └── polygon_test.go
│   │   ├── portainer/
│   │   │   ├── portainer.go
│   │   │   ├── portainer_integration_test.go
│   │   │   └── portainer_test.go
│   │   ├── portainertoken/
│   │   │   ├── portainertoken.go
│   │   │   ├── portainertoken_integration_test.go
│   │   │   └── portainertoken_test.go
│   │   ├── positionstack/
│   │   │   ├── positionstack.go
│   │   │   ├── positionstack_integration_test.go
│   │   │   └── positionstack_test.go
│   │   ├── postageapp/
│   │   │   ├── postageapp.go
│   │   │   ├── postageapp_integration_test.go
│   │   │   └── postageapp_test.go
│   │   ├── postbacks/
│   │   │   ├── postbacks.go
│   │   │   ├── postbacks_integration_test.go
│   │   │   └── postbacks_test.go
│   │   ├── postgres/
│   │   │   ├── postgres.go
│   │   │   ├── postgres_integration_test.go
│   │   │   └── postgres_test.go
│   │   ├── posthog/
│   │   │   ├── posthog.go
│   │   │   ├── posthog_integration_test.go
│   │   │   └── posthog_test.go
│   │   ├── postman/
│   │   │   ├── postman.go
│   │   │   ├── postman_integration_test.go
│   │   │   └── postman_test.go
│   │   ├── postmark/
│   │   │   ├── postmark.go
│   │   │   ├── postmark_integration_test.go
│   │   │   └── postmark_test.go
│   │   ├── powrbot/
│   │   │   ├── powrbot.go
│   │   │   ├── powrbot_integration_test.go
│   │   │   └── powrbot_test.go
│   │   ├── prefect/
│   │   │   ├── prefect.go
│   │   │   ├── prefect_integration_test.go
│   │   │   └── prefect_test.go
│   │   ├── privacy/
│   │   │   ├── privacy.go
│   │   │   ├── privacy_integration_test.go
│   │   │   └── privacy_test.go
│   │   ├── privatekey/
│   │   │   ├── cracker.go
│   │   │   ├── cracker_test.go
│   │   │   ├── fingerprint.go
│   │   │   ├── list.txt
│   │   │   ├── normalize.go
│   │   │   ├── privatekey.go
│   │   │   ├── privatekey_integration_test.go
│   │   │   ├── privatekey_test.go
│   │   │   ├── ssh_integration.go
│   │   │   └── ssh_integration_test.go
│   │   ├── prodpad/
│   │   │   ├── prodpad.go
│   │   │   ├── prodpad_integration_test.go
│   │   │   └── prodpad_test.go
│   │   ├── prospectcrm/
│   │   │   ├── prospectcrm.go
│   │   │   ├── prospectcrm_integration_test.go
│   │   │   └── prospectcrm_test.go
│   │   ├── protocolsio/
│   │   │   ├── protocolsio.go
│   │   │   ├── protocolsio_integration_test.go
│   │   │   └── protocolsio_test.go
│   │   ├── proxycrawl/
│   │   │   ├── proxycrawl.go
│   │   │   ├── proxycrawl_integration_test.go
│   │   │   └── proxycrawl_test.go
│   │   ├── pubnubpublishkey/
│   │   │   ├── pubnubpublishkey.go
│   │   │   ├── pubnubpublishkey_integration_test.go
│   │   │   └── pubnubpublishkey_test.go
│   │   ├── pubnubsubscriptionkey/
│   │   │   ├── pubnubsubscriptionkey.go
│   │   │   ├── pubnubsubscriptionkey_integration_test.go
│   │   │   └── pubnubsubscriptionkey_test.go
│   │   ├── pulumi/
│   │   │   ├── pulumi.go
│   │   │   ├── pulumi_integration_test.go
│   │   │   └── pulumi_test.go
│   │   ├── purestake/
│   │   │   ├── purestake.go
│   │   │   ├── purestake_integration_test.go
│   │   │   └── purestake_test.go
│   │   ├── pushbulletapikey/
│   │   │   ├── pushbulletapikey.go
│   │   │   ├── pushbulletapikey_integration_test.go
│   │   │   └── pushbulletapikey_test.go
│   │   ├── pusherchannelkey/
│   │   │   ├── pusherchannelkey.go
│   │   │   ├── pusherchannelkey_integration_test.go
│   │   │   └── pusherchannelkey_test.go
│   │   ├── pypi/
│   │   │   ├── pypi.go
│   │   │   ├── pypi_integration_test.go
│   │   │   └── pypi_test.go
│   │   ├── qase/
│   │   │   ├── qase.go
│   │   │   ├── qase_integration_test.go
│   │   │   └── qase_test.go
│   │   ├── qualaroo/
│   │   │   ├── qualaroo.go
│   │   │   ├── qualaroo_integration_test.go
│   │   │   └── qualaroo_test.go
│   │   ├── qubole/
│   │   │   ├── qubole.go
│   │   │   ├── qubole_integration_test.go
│   │   │   └── qubole_test.go
│   │   ├── rabbitmq/
│   │   │   ├── rabbitmq.go
│   │   │   ├── rabbitmq_integration_test.go
│   │   │   └── rabbitmq_test.go
│   │   ├── railwayapp/
│   │   │   ├── railwayapp.go
│   │   │   ├── railwayapp_integration_test.go
│   │   │   └── railwayapp_test.go
│   │   ├── ramp/
│   │   │   ├── ramp.go
│   │   │   ├── ramp_integration_test.go
│   │   │   └── ramp_test.go
│   │   ├── rapidapi/
│   │   │   ├── rapidapi.go
│   │   │   ├── rapidapi_integration_test.go
│   │   │   └── rapidapi_test.go
│   │   ├── raven/
│   │   │   ├── raven.go
│   │   │   ├── raven_integration_test.go
│   │   │   └── raven_test.go
│   │   ├── rawg/
│   │   │   ├── rawg.go
│   │   │   ├── rawg_integration_test.go
│   │   │   └── rawg_test.go
│   │   ├── razorpay/
│   │   │   ├── razorpay.go
│   │   │   ├── razorpay_integration_test.go
│   │   │   └── razorpay_test.go
│   │   ├── reachmail/
│   │   │   ├── reachmail.go
│   │   │   ├── reachmail_integration_test.go
│   │   │   └── reachmail_test.go
│   │   ├── readme/
│   │   │   ├── readme.go
│   │   │   ├── readme_integration_test.go
│   │   │   └── readme_test.go
│   │   ├── reallysimplesystems/
│   │   │   ├── reallysimplesystems.go
│   │   │   ├── reallysimplesystems_integration_test.go
│   │   │   └── reallysimplesystems_test.go
│   │   ├── rebrandly/
│   │   │   ├── rebrandly.go
│   │   │   ├── rebrandly_integration_test.go
│   │   │   └── rebrandly_test.go
│   │   ├── rechargepayments/
│   │   │   ├── rechargepayments.go
│   │   │   ├── rechargepayments_integration_test.go
│   │   │   └── rechargepayments_test.go
│   │   ├── redis/
│   │   │   ├── redis.go
│   │   │   ├── redis_integration_test.go
│   │   │   └── redis_test.go
│   │   ├── refiner/
│   │   │   ├── refiner.go
│   │   │   ├── refiner_integration_test.go
│   │   │   └── refiner_test.go
│   │   ├── rentman/
│   │   │   ├── rentman.go
│   │   │   ├── rentman_integration_test.go
│   │   │   └── rentman_test.go
│   │   ├── repairshopr/
│   │   │   ├── repairshopr.go
│   │   │   ├── repairshopr_integration_test.go
│   │   │   └── repairshopr_test.go
│   │   ├── replicate/
│   │   │   ├── replicate.go
│   │   │   ├── replicate_integration_test.go
│   │   │   └── replicate_test.go
│   │   ├── replyio/
│   │   │   ├── replyio.go
│   │   │   ├── replyio_integration_test.go
│   │   │   └── replyio_test.go
│   │   ├── requestfinance/
│   │   │   ├── requestfinance.go
│   │   │   ├── requestfinance_integration_test.go
│   │   │   └── requestfinance_test.go
│   │   ├── restpackhtmltopdfapi/
│   │   │   ├── restpackhtmltopdfapi.go
│   │   │   ├── restpackhtmltopdfapi_integration_test.go
│   │   │   └── restpackhtmltopdfapi_test.go
│   │   ├── restpackscreenshotapi/
│   │   │   ├── restpackscreenshotapi.go
│   │   │   ├── restpackscreenshotapi_integration_test.go
│   │   │   └── restpackscreenshotapi_test.go
│   │   ├── rev/
│   │   │   ├── rev.go
│   │   │   ├── rev_integration_test.go
│   │   │   └── rev_test.go
│   │   ├── revampcrm/
│   │   │   ├── revampcrm.go
│   │   │   ├── revampcrm_integration_test.go
│   │   │   └── revampcrm_test.go
│   │   ├── ringcentral/
│   │   │   ├── ringcentral.go
│   │   │   ├── ringcentral_integration_test.go
│   │   │   └── ringcentral_test.go
│   │   ├── ritekit/
│   │   │   ├── ritekit.go
│   │   │   ├── ritekit_integration_test.go
│   │   │   └── ritekit_test.go
│   │   ├── roaring/
│   │   │   ├── roaring.go
│   │   │   ├── roaring_integration_test.go
│   │   │   └── roaring_test.go
│   │   ├── robinhoodcrypto/
│   │   │   ├── robinhoodcrypto.go
│   │   │   ├── robinhoodcrypto_integration_test.go
│   │   │   └── robinhoodcrypto_test.go
│   │   ├── rocketreach/
│   │   │   ├── rocketreach.go
│   │   │   ├── rocketreach_integration_test.go
│   │   │   └── rocketreach_test.go
│   │   ├── rootly/
│   │   │   ├── rootly.go
│   │   │   ├── rootly_integration_test.go
│   │   │   └── rootly_test.go
│   │   ├── route4me/
│   │   │   ├── route4me.go
│   │   │   ├── route4me_integration_test.go
│   │   │   └── route4me_test.go
│   │   ├── rownd/
│   │   │   ├── rownd.go
│   │   │   ├── rownd_integration_test.go
│   │   │   └── rownd_test.go
│   │   ├── rubygems/
│   │   │   ├── rubygems.go
│   │   │   ├── rubygems_integration_test.go
│   │   │   └── rubygems_test.go
│   │   ├── runrunit/
│   │   │   ├── runrunit.go
│   │   │   ├── runrunit_integration_test.go
│   │   │   └── runrunit_test.go
│   │   ├── saladcloudapikey/
│   │   │   ├── saladcloudapikey.go
│   │   │   ├── saladcloudapikey_integration_test.go
│   │   │   └── saladcloudapikey_test.go
│   │   ├── salesblink/
│   │   │   ├── salesblink.go
│   │   │   ├── salesblink_integration_test.go
│   │   │   └── salesblink_test.go
│   │   ├── salescookie/
│   │   │   ├── salescookie.go
│   │   │   ├── salescookie_integration_test.go
│   │   │   └── salescookie_test.go
│   │   ├── salesflare/
│   │   │   ├── salesflare.go
│   │   │   ├── salesflare_integration_test.go
│   │   │   └── salesflare_test.go
│   │   ├── salesforce/
│   │   │   ├── salesforce.go
│   │   │   ├── salesforce_integration_test.go
│   │   │   └── salesforce_test.go
│   │   ├── salesforceoauth2/
│   │   │   ├── salesforceoauth2.go
│   │   │   ├── salesforceoauth2_integration_test.go
│   │   │   └── salesforceoauth2_test.go
│   │   ├── salesforcerefreshtoken/
│   │   │   ├── salesforcerefreshtoken.go
│   │   │   ├── salesforcerefreshtoken_integration_test.go
│   │   │   └── salesforcerefreshtoken_test.go
│   │   ├── salesmate/
│   │   │   ├── salesmate.go
│   │   │   ├── salesmate_integration_test.go
│   │   │   └── salesmate_test.go
│   │   ├── sanity/
│   │   │   ├── sanity.go
│   │   │   ├── sanity_integration_test.go
│   │   │   └── sanity_test.go
│   │   ├── satismeterprojectkey/
│   │   │   ├── satismeterprojectkey.go
│   │   │   ├── satismeterprojectkey_integration_test.go
│   │   │   └── satismeterprojectkey_test.go
│   │   ├── satismeterwritekey/
│   │   │   ├── satismeterwritekey.go
│   │   │   ├── satismeterwritekey_integration_test.go
│   │   │   └── satismeterwritekey_test.go
│   │   ├── saucelabs/
│   │   │   ├── saucelabs.go
│   │   │   ├── saucelabs_integration_test.go
│   │   │   └── saucelabs_test.go
│   │   ├── scalewaykey/
│   │   │   ├── scalewaykey.go
│   │   │   ├── scalewaykey_integration_test.go
│   │   │   └── scalewaykey_test.go
│   │   ├── scalr/
│   │   │   ├── scalr.go
│   │   │   ├── scalr_integration_test.go
│   │   │   └── scalr_test.go
│   │   ├── scrapeowl/
│   │   │   ├── scrapeowl.go
│   │   │   ├── scrapeowl_integration_test.go
│   │   │   └── scrapeowl_test.go
│   │   ├── scraperapi/
│   │   │   ├── scraperapi.go
│   │   │   ├── scraperapi_integration_test.go
│   │   │   └── scraperapi_test.go
│   │   ├── scraperbox/
│   │   │   ├── scraperbox.go
│   │   │   ├── scraperbox_integration_test.go
│   │   │   └── scraperbox_test.go
│   │   ├── scrapestack/
│   │   │   ├── scrapestack.go
│   │   │   ├── scrapestack_integration_test.go
│   │   │   └── scrapestack_test.go
│   │   ├── scrapfly/
│   │   │   ├── scrapfly.go
│   │   │   ├── scrapfly_integration_test.go
│   │   │   └── scrapfly_test.go
│   │   ├── scrapingant/
│   │   │   ├── scrapingant.go
│   │   │   ├── scrapingant_integration_test.go
│   │   │   └── scrapingant_test.go
│   │   ├── scrapingbee/
│   │   │   ├── scrapingbee.go
│   │   │   ├── scrapingbee_integration_test.go
│   │   │   └── scrapingbee_test.go
│   │   ├── screenshotapi/
│   │   │   ├── screenshotapi.go
│   │   │   ├── screenshotapi_integration_test.go
│   │   │   └── screenshotapi_test.go
│   │   ├── screenshotlayer/
│   │   │   ├── screenshotlayer.go
│   │   │   ├── screenshotlayer_integration_test.go
│   │   │   └── screenshotlayer_test.go
│   │   ├── scrutinizerci/
│   │   │   ├── scrutinizerci.go
│   │   │   ├── scrutinizerci_integration_test.go
│   │   │   └── scrutinizerci_test.go
│   │   ├── securitytrails/
│   │   │   ├── securitytrails.go
│   │   │   ├── securitytrails_integration_test.go
│   │   │   └── securitytrails_test.go
│   │   ├── segmentapikey/
│   │   │   ├── segmentapikey.go
│   │   │   ├── segmentapikey_integration_test.go
│   │   │   └── segmentapikey_test.go
│   │   ├── selectpdf/
│   │   │   ├── selectpdf.go
│   │   │   ├── selectpdf_integration_test.go
│   │   │   └── selectpdf_test.go
│   │   ├── semaphore/
│   │   │   ├── semaphore.go
│   │   │   ├── semaphore_integration_test.go
│   │   │   └── semaphore_test.go
│   │   ├── sendbird/
│   │   │   ├── sendbird.go
│   │   │   ├── sendbird_integration_test.go
│   │   │   └── sendbird_test.go
│   │   ├── sendbirdorganizationapi/
│   │   │   ├── sendbirdorganizationapi.go
│   │   │   ├── sendbirdorganizationapi_integration_test.go
│   │   │   └── sendbirdorganizationapi_test.go
│   │   ├── sendgrid/
│   │   │   ├── sendgrid.go
│   │   │   ├── sendgrid_integration_test.go
│   │   │   └── sendgrid_test.go
│   │   ├── sendinbluev2/
│   │   │   ├── sendinbluev2.go
│   │   │   ├── sendinbluev2_integration_test.go
│   │   │   └── sendinbluev2_test.go
│   │   ├── sentryorgtoken/
│   │   │   ├── sentryorgtoken.go
│   │   │   ├── sentryorgtoken_integration_test.go
│   │   │   └── sentryorgtoken_test.go
│   │   ├── sentrytoken/
│   │   │   ├── v1/
│   │   │   │   ├── sentrytoken.go
│   │   │   │   ├── sentrytoken_integration_test.go
│   │   │   │   └── sentrytoken_test.go
│   │   │   └── v2/
│   │   │       ├── sentrytoken.go
│   │   │       ├── sentrytoken_integration_test.go
│   │   │       └── sentrytoken_test.go
│   │   ├── serphouse/
│   │   │   ├── serphouse.go
│   │   │   ├── serphouse_integration_test.go
│   │   │   └── serphouse_test.go
│   │   ├── serpstack/
│   │   │   ├── serpstack.go
│   │   │   ├── serpstack_integration_test.go
│   │   │   └── serpstack_test.go
│   │   ├── sheety/
│   │   │   ├── sheety.go
│   │   │   ├── sheety_integration_test.go
│   │   │   └── sheety_test.go
│   │   ├── sherpadesk/
│   │   │   ├── sherpadesk.go
│   │   │   ├── sherpadesk_integration_test.go
│   │   │   └── sherpadesk_test.go
│   │   ├── shipday/
│   │   │   ├── shipday.go
│   │   │   ├── shipday_integration_test.go
│   │   │   └── shipday_test.go
│   │   ├── shodankey/
│   │   │   ├── shodankey.go
│   │   │   ├── shodankey_integration_test.go
│   │   │   └── shodankey_test.go
│   │   ├── shopify/
│   │   │   ├── shopify.go
│   │   │   ├── shopify_integration_test.go
│   │   │   └── shopify_test.go
│   │   ├── shortcut/
│   │   │   ├── shortcut.go
│   │   │   ├── shortcut_integration_test.go
│   │   │   └── shortcut_test.go
│   │   ├── shotstack/
│   │   │   ├── shotstack.go
│   │   │   ├── shotstack_integration_test.go
│   │   │   └── shotstack_test.go
│   │   ├── shutterstock/
│   │   │   ├── shutterstock.go
│   │   │   ├── shutterstock_integration_test.go
│   │   │   └── shutterstock_test.go
│   │   ├── shutterstockoauth/
│   │   │   ├── shutterstockoauth.go
│   │   │   ├── shutterstockoauth_integration_test.go
│   │   │   └── shutterstockoauth_test.go
│   │   ├── signable/
│   │   │   ├── signable.go
│   │   │   ├── signable_integration_test.go
│   │   │   └── signable_test.go
│   │   ├── signalwire/
│   │   │   ├── signalwire.go
│   │   │   ├── signalwire_integration_test.go
│   │   │   └── signalwire_test.go
│   │   ├── signaturit/
│   │   │   ├── signaturit.go
│   │   │   ├── signaturit_integration_test.go
│   │   │   └── signaturit_test.go
│   │   ├── signupgenius/
│   │   │   ├── signupgenius.go
│   │   │   ├── signupgenius_integration_test.go
│   │   │   └── signupgenius_test.go
│   │   ├── sigopt/
│   │   │   ├── sigopt.go
│   │   │   ├── sigopt_integration_test.go
│   │   │   └── sigopt_test.go
│   │   ├── simfin/
│   │   │   ├── simfin.go
│   │   │   ├── simfin_integration_test.go
│   │   │   └── simfin_test.go
│   │   ├── simplesat/
│   │   │   ├── simplesat.go
│   │   │   ├── simplesat_integration_test.go
│   │   │   └── simplesat_test.go
│   │   ├── simplynoted/
│   │   │   ├── simplynoted.go
│   │   │   ├── simplynoted_integration_test.go
│   │   │   └── simplynoted_test.go
│   │   ├── simvoly/
│   │   │   ├── simvoly.go
│   │   │   ├── simvoly_integration_test.go
│   │   │   └── simvoly_test.go
│   │   ├── sinchmessage/
│   │   │   ├── sinchmessage.go
│   │   │   ├── sinchmessage_integration_test.go
│   │   │   └── sinchmessage_test.go
│   │   ├── sirv/
│   │   │   ├── sirv.go
│   │   │   ├── sirv_integration_test.go
│   │   │   └── sirv_test.go
│   │   ├── siteleaf/
│   │   │   ├── siteleaf.go
│   │   │   ├── siteleaf_integration_test.go
│   │   │   └── siteleaf_test.go
│   │   ├── skrappio/
│   │   │   ├── skrappio.go
│   │   │   ├── skrappio_integration_test.go
│   │   │   └── skrappio_test.go
│   │   ├── skybiometry/
│   │   │   ├── skybiometry.go
│   │   │   ├── skybiometry_integration_test.go
│   │   │   └── skybiometry_test.go
│   │   ├── slack/
│   │   │   ├── slack.go
│   │   │   ├── slack_integration_test.go
│   │   │   └── slack_test.go
│   │   ├── slackwebhook/
│   │   │   ├── slackwebhook.go
│   │   │   ├── slackwebhook_integration_test.go
│   │   │   └── slackwebhook_test.go
│   │   ├── smartsheets/
│   │   │   ├── smartsheets.go
│   │   │   ├── smartsheets_integration_test.go
│   │   │   └── smartsheets_test.go
│   │   ├── smartystreets/
│   │   │   ├── smartystreets.go
│   │   │   ├── smartystreets_integration_test.go
│   │   │   └── smartystreets_test.go
│   │   ├── smooch/
│   │   │   ├── smooch.go
│   │   │   ├── smooch_integration_test.go
│   │   │   └── smooch_test.go
│   │   ├── snipcart/
│   │   │   ├── snipcart.go
│   │   │   ├── snipcart_integration_test.go
│   │   │   └── snipcart_test.go
│   │   ├── snowflake/
│   │   │   ├── snowflake.go
│   │   │   ├── snowflake_integration_test.go
│   │   │   └── snowflake_test.go
│   │   ├── snykkey/
│   │   │   ├── snykkey.go
│   │   │   ├── snykkey_integration_test.go
│   │   │   └── snykkey_test.go
│   │   ├── sonarcloud/
│   │   │   ├── sonarcloud.go
│   │   │   ├── sonarcloud_integration_test.go
│   │   │   └── sonarcloud_test.go
│   │   ├── sourcegraph/
│   │   │   ├── sourcegraph.go
│   │   │   ├── sourcegraph_integration_test.go
│   │   │   └── sourcegraph_test.go
│   │   ├── sourcegraphcody/
│   │   │   ├── sourcegraphcody.go
│   │   │   ├── sourcegraphcody_integration_test.go
│   │   │   └── sourcegraphcody_test.go
│   │   ├── sparkpost/
│   │   │   ├── sparkpost.go
│   │   │   ├── sparkpost_integration_test.go
│   │   │   └── sparkpost_test.go
│   │   ├── speechtextai/
│   │   │   ├── speechtextai.go
│   │   │   ├── speechtextai_integration_test.go
│   │   │   └── speechtextai_test.go
│   │   ├── splunkobservabilitytoken/
│   │   │   ├── splunkobservabilitytoken.go
│   │   │   ├── splunkobservabilitytoken_integration_test.go
│   │   │   └── splunkobservabilitytoken_test.go
│   │   ├── spoonacular/
│   │   │   ├── spoonacular.go
│   │   │   ├── spoonacular_integration_test.go
│   │   │   └── spoonacular_test.go
│   │   ├── sportsmonk/
│   │   │   ├── sportsmonk.go
│   │   │   ├── sportsmonk_integration_test.go
│   │   │   └── sportsmonk_test.go
│   │   ├── spotifykey/
│   │   │   ├── spotifykey.go
│   │   │   ├── spotifykey_integration_test.go
│   │   │   └── spotifykey_test.go
│   │   ├── sqlserver/
│   │   │   ├── sqlserver.go
│   │   │   ├── sqlserver_integration_test.go
│   │   │   └── sqlserver_test.go
│   │   ├── square/
│   │   │   ├── square.go
│   │   │   ├── square_integration_test.go
│   │   │   └── square_test.go
│   │   ├── squareapp/
│   │   │   ├── squareapp.go
│   │   │   ├── squareapp_integration_test.go
│   │   │   └── squareapp_test.go
│   │   ├── squarespace/
│   │   │   ├── squarespace.go
│   │   │   ├── squarespace_integration_test.go
│   │   │   └── squarespace_test.go
│   │   ├── squareup/
│   │   │   ├── squareup.go
│   │   │   ├── squareup_integration_test.go
│   │   │   └── squareup_test.go
│   │   ├── sslmate/
│   │   │   ├── sslmate.go
│   │   │   ├── sslmate_integration_test.go
│   │   │   └── sslmate_test.go
│   │   ├── statuscake/
│   │   │   ├── statuscake.go
│   │   │   ├── statuscake_integration_test.go
│   │   │   └── statuscake_test.go
│   │   ├── statuspage/
│   │   │   ├── statuspage.go
│   │   │   ├── statuspage_integration_test.go
│   │   │   └── statuspage_test.go
│   │   ├── statuspal/
│   │   │   ├── statuspal.go
│   │   │   ├── statuspal_integration_test.go
│   │   │   └── statuspal_test.go
│   │   ├── stitchdata/
│   │   │   ├── stitchdata.go
│   │   │   ├── stitchdata_integration_test.go
│   │   │   └── stitchdata_test.go
│   │   ├── stockdata/
│   │   │   ├── stockdata.go
│   │   │   ├── stockdata_integration_test.go
│   │   │   └── stockdata_test.go
│   │   ├── storecove/
│   │   │   ├── storecove.go
│   │   │   ├── storecove_integration_test.go
│   │   │   └── storecove_test.go
│   │   ├── stormboard/
│   │   │   ├── stormboard.go
│   │   │   ├── stormboard_integration_test.go
│   │   │   └── stormboard_test.go
│   │   ├── stormglass/
│   │   │   ├── stormglass.go
│   │   │   ├── stormglass_integration_test.go
│   │   │   └── stormglass_test.go
│   │   ├── storyblok/
│   │   │   ├── storyblok.go
│   │   │   ├── storyblok_integration_test.go
│   │   │   └── storyblok_test.go
│   │   ├── storyblokpersonalaccesstoken/
│   │   │   ├── storyblok.go
│   │   │   ├── storyblok_integration_test.go
│   │   │   └── storyblok_test.go
│   │   ├── storychief/
│   │   │   ├── storychief.go
│   │   │   ├── storychief_integration_test.go
│   │   │   └── storychief_test.go
│   │   ├── strava/
│   │   │   ├── strava.go
│   │   │   ├── strava_integration_test.go
│   │   │   └── strava_test.go
│   │   ├── streak/
│   │   │   ├── streak.go
│   │   │   ├── streak_integration_test.go
│   │   │   └── streak_test.go
│   │   ├── stripe/
│   │   │   ├── stripe.go
│   │   │   ├── stripe_integration_test.go
│   │   │   └── stripe_test.go
│   │   ├── stripepaymentintent/
│   │   │   ├── stripepaymentintent.go
│   │   │   ├── stripepaymentintent_integration_test.go
│   │   │   └── stripepaymentintent_test.go
│   │   ├── stripo/
│   │   │   ├── stripo.go
│   │   │   ├── stripo_integration_test.go
│   │   │   └── stripo_test.go
│   │   ├── stytch/
│   │   │   ├── stytch.go
│   │   │   ├── stytch_integration_test.go
│   │   │   └── stytch_test.go
│   │   ├── sugester/
│   │   │   ├── sugester.go
│   │   │   ├── sugester_integration_test.go
│   │   │   └── sugester_test.go
│   │   ├── sumologickey/
│   │   │   ├── sumologickey.go
│   │   │   ├── sumologickey_integration_test.go
│   │   │   └── sumologickey_test.go
│   │   ├── supabasetoken/
│   │   │   ├── supabasetoken.go
│   │   │   ├── supabasetoken_integration_test.go
│   │   │   └── supabasetoken_test.go
│   │   ├── supernotesapi/
│   │   │   ├── supernotesapi.go
│   │   │   ├── supernotesapi_integration_test.go
│   │   │   └── supernotesapi_test.go
│   │   ├── surveyanyplace/
│   │   │   ├── surveyanyplace.go
│   │   │   ├── surveyanyplace_integration_test.go
│   │   │   └── surveyanyplace_test.go
│   │   ├── surveybot/
│   │   │   ├── surveybot.go
│   │   │   ├── surveybot_integration_test.go
│   │   │   └── surveybot_test.go
│   │   ├── surveysparrow/
│   │   │   ├── surveysparrow.go
│   │   │   ├── surveysparrow_integration_test.go
│   │   │   └── surveysparrow_test.go
│   │   ├── survicate/
│   │   │   ├── survicate.go
│   │   │   ├── survicate_integration_test.go
│   │   │   └── survicate_test.go
│   │   ├── swell/
│   │   │   ├── swell.go
│   │   │   ├── swell_integration_test.go
│   │   │   └── swell_test.go
│   │   ├── swiftype/
│   │   │   ├── swiftype.go
│   │   │   ├── swiftype_integration_test.go
│   │   │   └── swiftype_test.go
│   │   ├── tableau/
│   │   │   ├── tableau.go
│   │   │   ├── tableau_integration_test.go
│   │   │   └── tableau_test.go
│   │   ├── tailscale/
│   │   │   ├── tailscale.go
│   │   │   ├── tailscale_integration_test.go
│   │   │   └── tailscale_test.go
│   │   ├── tallyfy/
│   │   │   ├── tallyfy.go
│   │   │   ├── tallyfy_integration_test.go
│   │   │   └── tallyfy_test.go
│   │   ├── tatumio/
│   │   │   ├── tatumio.go
│   │   │   ├── tatumio_integration_test.go
│   │   │   └── tatumio_test.go
│   │   ├── taxjar/
│   │   │   ├── taxjar.go
│   │   │   ├── taxjar_integration_test.go
│   │   │   └── taxjar_test.go
│   │   ├── teamgate/
│   │   │   ├── teamgate.go
│   │   │   ├── teamgate_integration_test.go
│   │   │   └── teamgate_test.go
│   │   ├── teamworkcrm/
│   │   │   ├── teamworkcrm.go
│   │   │   ├── teamworkcrm_integration_test.go
│   │   │   └── teamworkcrm_test.go
│   │   ├── teamworkdesk/
│   │   │   ├── teamworkdesk.go
│   │   │   ├── teamworkdesk_integration_test.go
│   │   │   └── teamworkdesk_test.go
│   │   ├── teamworkspaces/
│   │   │   ├── teamworkspaces.go
│   │   │   ├── teamworkspaces_integration_test.go
│   │   │   └── teamworkspaces_test.go
│   │   ├── technicalanalysisapi/
│   │   │   ├── technicalanalysisapi.go
│   │   │   ├── technicalanalysisapi_integration_test.go
│   │   │   └── technicalanalysisapi_test.go
│   │   ├── tefter/
│   │   │   ├── tefter.go
│   │   │   ├── tefter_integration_test.go
│   │   │   └── tefter_test.go
│   │   ├── telegrambottoken/
│   │   │   ├── telegrambottoken.go
│   │   │   ├── telegrambottoken_integration_test.go
│   │   │   └── telegrambottoken_test.go
│   │   ├── teletype/
│   │   │   ├── teletype.go
│   │   │   ├── teletype_integration_test.go
│   │   │   └── teletype_test.go
│   │   ├── telnyx/
│   │   │   ├── telnyx.go
│   │   │   ├── telnyx_integration_test.go
│   │   │   └── telnyx_test.go
│   │   ├── terraformcloudpersonaltoken/
│   │   │   ├── terraformcloudpersonaltoken.go
│   │   │   ├── terraformcloudpersonaltoken_integration_test.go
│   │   │   └── terraformcloudpersonaltoken_test.go
│   │   ├── testingbot/
│   │   │   ├── testingbot.go
│   │   │   ├── testingbot_integration_test.go
│   │   │   └── testingbot_test.go
│   │   ├── textmagic/
│   │   │   ├── textmagic.go
│   │   │   ├── textmagic_integration_test.go
│   │   │   └── textmagic_test.go
│   │   ├── theoddsapi/
│   │   │   ├── theoddsapi.go
│   │   │   ├── theoddsapi_integration_test.go
│   │   │   └── theoddsapi_test.go
│   │   ├── thinkific/
│   │   │   ├── thinkific.go
│   │   │   ├── thinkific_integration_test.go
│   │   │   └── thinkific_test.go
│   │   ├── thousandeyes/
│   │   │   ├── thousandeyes.go
│   │   │   ├── thousandeyes_integration_test.go
│   │   │   └── thousandeyes_test.go
│   │   ├── ticketmaster/
│   │   │   ├── ticketmaster.go
│   │   │   ├── ticketmaster_integration_test.go
│   │   │   └── ticketmaster_test.go
│   │   ├── tickettailor/
│   │   │   ├── tickettailor.go
│   │   │   ├── tickettailor_integration_test.go
│   │   │   └── tickettailor_test.go
│   │   ├── tiingo/
│   │   │   ├── tiingo.go
│   │   │   ├── tiingo_integration_test.go
│   │   │   └── tiingo_test.go
│   │   ├── timecamp/
│   │   │   ├── timecamp.go
│   │   │   ├── timecamp_integration_test.go
│   │   │   └── timecamp_test.go
│   │   ├── timezoneapi/
│   │   │   ├── timezoneapi.go
│   │   │   ├── timezoneapi_integration_test.go
│   │   │   └── timezoneapi_test.go
│   │   ├── tineswebhook/
│   │   │   ├── tineswebhook.go
│   │   │   ├── tineswebhook_integration_test.go
│   │   │   └── tineswebhook_test.go
│   │   ├── tly/
│   │   │   ├── tly.go
│   │   │   ├── tly_integration_test.go
│   │   │   └── tly_test.go
│   │   ├── tmetric/
│   │   │   ├── tmetric.go
│   │   │   ├── tmetric_integration_test.go
│   │   │   └── tmetric_test.go
│   │   ├── todoist/
│   │   │   ├── todoist.go
│   │   │   ├── todoist_integration_test.go
│   │   │   └── todoist_test.go
│   │   ├── toggltrack/
│   │   │   ├── toggltrack.go
│   │   │   ├── toggltrack_integration_test.go
│   │   │   └── toggltrack_test.go
│   │   ├── tokeet/
│   │   │   ├── tokeet.go
│   │   │   ├── tokeet_integration_test.go
│   │   │   └── tokeet_test.go
│   │   ├── tomorrowio/
│   │   │   ├── tomorrowio.go
│   │   │   ├── tomorrowio_integration_test.go
│   │   │   └── tomorrowio_test.go
│   │   ├── tomtom/
│   │   │   ├── tomtom.go
│   │   │   ├── tomtom_integration_test.go
│   │   │   └── tomtom_test.go
│   │   ├── tradier/
│   │   │   ├── tradier.go
│   │   │   ├── tradier_integration_test.go
│   │   │   └── tradier_test.go
│   │   ├── transferwise/
│   │   │   ├── transferwise.go
│   │   │   ├── transferwise_integration_test.go
│   │   │   └── transferwise_test.go
│   │   ├── travelpayouts/
│   │   │   ├── travelpayouts.go
│   │   │   ├── travelpayouts_integration_test.go
│   │   │   └── travelpayouts_test.go
│   │   ├── travisci/
│   │   │   ├── travisci.go
│   │   │   ├── travisci_integration_test.go
│   │   │   └── travisci_test.go
│   │   ├── trelloapikey/
│   │   │   ├── trelloapikey.go
│   │   │   ├── trelloapikey_integration_test.go
│   │   │   └── trelloapikey_test.go
│   │   ├── tru/
│   │   │   ├── tru.go
│   │   │   ├── tru_integration_test.go
│   │   │   └── tru_test.go
│   │   ├── trufflehogenterprise/
│   │   │   ├── trufflehogenterprise.go
│   │   │   ├── trufflehogenterprise_integration_test.go
│   │   │   └── trufflehogenterprise_test.go
│   │   ├── twelvedata/
│   │   │   ├── twelvedata.go
│   │   │   ├── twelvedata_integration_test.go
│   │   │   └── twelvedata_test.go
│   │   ├── twilio/
│   │   │   ├── twilio.go
│   │   │   ├── twilio_integration_test.go
│   │   │   └── twilio_test.go
│   │   ├── twilioapikey/
│   │   │   ├── twilioapikey.go
│   │   │   ├── twilioapikey_integration_test.go
│   │   │   └── twilioapikey_test.go
│   │   ├── twist/
│   │   │   ├── twist.go
│   │   │   ├── twist_integration_test.go
│   │   │   └── twist_test.go
│   │   ├── twitch/
│   │   │   ├── twitch.go
│   │   │   ├── twitch_integration_test.go
│   │   │   └── twitch_test.go
│   │   ├── twitchaccesstoken/
│   │   │   ├── twitchaccesstoken.go
│   │   │   ├── twitchaccesstoken_integration_test.go
│   │   │   └── twitchaccesstoken_test.go
│   │   ├── twitter/
│   │   │   ├── v1/
│   │   │   │   ├── twitter_v1.go
│   │   │   │   ├── twitter_v1_integration_test.go
│   │   │   │   └── twitter_v1_test.go
│   │   │   └── v2/
│   │   │       ├── twitter_v2.go
│   │   │       ├── twitter_v2_integration_test.go
│   │   │       └── twitter_v2_test.go
│   │   ├── twitterconsumerkey/
│   │   │   ├── twitterconsumerkey.go
│   │   │   ├── twitterconsumerkey_integration_test.go
│   │   │   └── twitterconsumerkey_test.go
│   │   ├── tyntec/
│   │   │   ├── tyntec.go
│   │   │   ├── tyntec_integration_test.go
│   │   │   └── tyntec_test.go
│   │   ├── typeform/
│   │   │   ├── v1/
│   │   │   │   ├── typeform.go
│   │   │   │   ├── typeform_integration_test.go
│   │   │   │   └── typeform_test.go
│   │   │   └── v2/
│   │   │       ├── typeform.go
│   │   │       ├── typeform_integration_test.go
│   │   │       └── typeform_test.go
│   │   ├── typetalk/
│   │   │   ├── typetalk.go
│   │   │   ├── typetalk_integration_test.go
│   │   │   └── typetalk_test.go
│   │   ├── ubidots/
│   │   │   ├── ubidots.go
│   │   │   ├── ubidots_integration_test.go
│   │   │   └── ubidots_test.go
│   │   ├── uclassify/
│   │   │   ├── uclassify.go
│   │   │   ├── uclassify_integration_test.go
│   │   │   └── uclassify_test.go
│   │   ├── unifyid/
│   │   │   ├── unifyid.go
│   │   │   ├── unifyid_integration_test.go
│   │   │   └── unifyid_test.go
│   │   ├── unplugg/
│   │   │   ├── unplugg.go
│   │   │   ├── unplugg_integration_test.go
│   │   │   └── unplugg_test.go
│   │   ├── unsplash/
│   │   │   ├── unsplash.go
│   │   │   ├── unsplash_integration_test.go
│   │   │   └── unsplash_test.go
│   │   ├── upcdatabase/
│   │   │   ├── upcdatabase.go
│   │   │   ├── upcdatabase_integration_test.go
│   │   │   └── upcdatabase_test.go
│   │   ├── uplead/
│   │   │   ├── uplead.go
│   │   │   ├── uplead_integration_test.go
│   │   │   └── uplead_test.go
│   │   ├── uploadcare/
│   │   │   ├── uploadcare.go
│   │   │   ├── uploadcare_integration_test.go
│   │   │   └── uploadcare_test.go
│   │   ├── uptimerobot/
│   │   │   ├── uptimerobot.go
│   │   │   ├── uptimerobot_integration_test.go
│   │   │   └── uptimerobot_test.go
│   │   ├── upwave/
│   │   │   ├── upwave.go
│   │   │   ├── upwave_integration_test.go
│   │   │   └── upwave_test.go
│   │   ├── uri/
│   │   │   ├── uri.go
│   │   │   ├── uri_integration_test.go
│   │   │   └── uri_test.go
│   │   ├── urlscan/
│   │   │   ├── urlscan.go
│   │   │   ├── urlscan_integration_test.go
│   │   │   └── urlscan_test.go
│   │   ├── user/
│   │   │   ├── user.go
│   │   │   ├── user_integration_test.go
│   │   │   └── user_test.go
│   │   ├── userflow/
│   │   │   ├── userflow.go
│   │   │   ├── userflow_integration_test.go
│   │   │   └── userflow_test.go
│   │   ├── userstack/
│   │   │   ├── userstack.go
│   │   │   ├── userstack_integration_test.go
│   │   │   └── userstack_test.go
│   │   ├── vagrantcloudpersonaltoken/
│   │   │   ├── vagrantcloudpersonaltoken.go
│   │   │   ├── vagrantcloudpersonaltoken_integration_test.go
│   │   │   └── vagrantcloudpersonaltoken_test.go
│   │   ├── vatlayer/
│   │   │   ├── vatlayer.go
│   │   │   ├── vatlayer_integration_test.go
│   │   │   └── vatlayer_test.go
│   │   ├── vbout/
│   │   │   ├── vbout.go
│   │   │   ├── vbout_integration_test.go
│   │   │   └── vbout_test.go
│   │   ├── vercel/
│   │   │   ├── vercel.go
│   │   │   ├── vercel_integration_test.go
│   │   │   └── vercel_test.go
│   │   ├── verifier/
│   │   │   ├── verifier.go
│   │   │   ├── verifier_integration_test.go
│   │   │   └── verifier_test.go
│   │   ├── verimail/
│   │   │   ├── verimail.go
│   │   │   ├── verimail_integration_test.go
│   │   │   └── verimail_test.go
│   │   ├── veriphone/
│   │   │   ├── veriphone.go
│   │   │   ├── veriphone_integration_test.go
│   │   │   └── veriphone_test.go
│   │   ├── versioneye/
│   │   │   ├── versioneye.go
│   │   │   ├── versioneye_integration_test.go
│   │   │   └── versioneye_test.go
│   │   ├── viewneo/
│   │   │   ├── viewneo.go
│   │   │   ├── viewneo_integration_test.go
│   │   │   └── viewneo_test.go
│   │   ├── virustotal/
│   │   │   ├── virustotal.go
│   │   │   ├── virustotal_integration_test.go
│   │   │   └── virustotal_test.go
│   │   ├── visualcrossing/
│   │   │   ├── visualcrossing.go
│   │   │   ├── visualcrossing_integration_test.go
│   │   │   └── visualcrossing_test.go
│   │   ├── voiceflow/
│   │   │   ├── voiceflow.go
│   │   │   ├── voiceflow_integration_test.go
│   │   │   └── voiceflow_test.go
│   │   ├── voicegain/
│   │   │   ├── voicegain.go
│   │   │   ├── voicegain_integration_test.go
│   │   │   └── voicegain_test.go
│   │   ├── voodoosms/
│   │   │   ├── voodoosms.go
│   │   │   ├── voodoosms_integration_test.go
│   │   │   └── voodoosms_test.go
│   │   ├── vouchery/
│   │   │   ├── vouchery.go
│   │   │   ├── vouchery_integration_test.go
│   │   │   └── vouchery_test.go
│   │   ├── vpnapi/
│   │   │   ├── vpnapi.go
│   │   │   ├── vpnapi_integration_test.go
│   │   │   └── vpnapi_test.go
│   │   ├── vultrapikey/
│   │   │   ├── vultrapikey.go
│   │   │   ├── vultrapikey_integration_test.go
│   │   │   └── vultrapikey_test.go
│   │   ├── vyte/
│   │   │   ├── vyte.go
│   │   │   ├── vyte_integration_test.go
│   │   │   └── vyte_test.go
│   │   ├── walkscore/
│   │   │   ├── walkscore.go
│   │   │   ├── walkscore_integration_test.go
│   │   │   └── walkscore_test.go
│   │   ├── weatherbit/
│   │   │   ├── weatherbit.go
│   │   │   ├── weatherbit_integration_test.go
│   │   │   └── weatherbit_test.go
│   │   ├── weatherstack/
│   │   │   ├── weatherstack.go
│   │   │   ├── weatherstack_integration_test.go
│   │   │   └── weatherstack_test.go
│   │   ├── web3storage/
│   │   │   ├── web3storage.go
│   │   │   ├── web3storage_integration_test.go
│   │   │   └── web3storage_test.go
│   │   ├── webex/
│   │   │   ├── webex.go
│   │   │   ├── webex_integration_test.go
│   │   │   └── webex_test.go
│   │   ├── webexbot/
│   │   │   ├── webexbot.go
│   │   │   ├── webexbot_integration_test.go
│   │   │   └── webexbot_test.go
│   │   ├── webflow/
│   │   │   ├── webflow.go
│   │   │   ├── webflow_integration_test.go
│   │   │   └── webflow_test.go
│   │   ├── webscraper/
│   │   │   ├── webscraper.go
│   │   │   ├── webscraper_integration_test.go
│   │   │   └── webscraper_test.go
│   │   ├── webscraping/
│   │   │   ├── webscraping.go
│   │   │   ├── webscraping_integration_test.go
│   │   │   └── webscraping_test.go
│   │   ├── websitepulse/
│   │   │   ├── websitepulse.go
│   │   │   ├── websitepulse_integration_test.go
│   │   │   └── websitepulse_test.go
│   │   ├── weightsandbiases/
│   │   │   ├── weightsandbiases.go
│   │   │   ├── weightsandbiases_integration_test.go
│   │   │   └── weightsandbiases_test.go
│   │   ├── wepay/
│   │   │   ├── wepay.go
│   │   │   ├── wepay_integration_test.go
│   │   │   └── wepay_test.go
│   │   ├── whoxy/
│   │   │   ├── whoxy.go
│   │   │   ├── whoxy_integration_test.go
│   │   │   └── whoxy_test.go
│   │   ├── wistia/
│   │   │   ├── wistia.go
│   │   │   ├── wistia_integration_test.go
│   │   │   └── wistia_test.go
│   │   ├── wit/
│   │   │   ├── wit.go
│   │   │   ├── wit_integration_test.go
│   │   │   └── wit_test.go
│   │   ├── wiz/
│   │   │   ├── wiz.go
│   │   │   ├── wiz_integration_test.go
│   │   │   └── wiz_test.go
│   │   ├── worksnaps/
│   │   │   ├── worksnaps.go
│   │   │   ├── worksnaps_integration_test.go
│   │   │   └── worksnaps_test.go
│   │   ├── workstack/
│   │   │   ├── workstack.go
│   │   │   ├── workstack_integration_test.go
│   │   │   └── workstack_test.go
│   │   ├── worldcoinindex/
│   │   │   ├── worldcoinindex.go
│   │   │   ├── worldcoinindex_integration_test.go
│   │   │   └── worldcoinindex_test.go
│   │   ├── worldweather/
│   │   │   ├── worldweather.go
│   │   │   ├── worldweather_integration_test.go
│   │   │   └── worldweather_test.go
│   │   ├── wrike/
│   │   │   ├── wrike.go
│   │   │   ├── wrike_integration_test.go
│   │   │   └── wrike_test.go
│   │   ├── xai/
│   │   │   ├── xai.go
│   │   │   ├── xai_integration_test.go
│   │   │   └── xai_test.go
│   │   ├── yandex/
│   │   │   ├── yandex.go
│   │   │   ├── yandex_integration_test.go
│   │   │   └── yandex_test.go
│   │   ├── yelp/
│   │   │   ├── yelp.go
│   │   │   ├── yelp_integration_test.go
│   │   │   └── yelp_test.go
│   │   ├── youneedabudget/
│   │   │   ├── youneedabudget.go
│   │   │   ├── youneedabudget_integration_test.go
│   │   │   └── youneedabudget_test.go
│   │   ├── yousign/
│   │   │   ├── yousign.go
│   │   │   ├── yousign_integration_test.go
│   │   │   └── yousign_test.go
│   │   ├── youtubeapikey/
│   │   │   ├── youtubeapikey.go
│   │   │   ├── youtubeapikey_integration_test.go
│   │   │   └── youtubeapikey_test.go
│   │   ├── zapierwebhook/
│   │   │   ├── zapierwebhook.go
│   │   │   ├── zapierwebhook_integration_test.go
│   │   │   └── zapierwebhook_test.go
│   │   ├── zendeskapi/
│   │   │   ├── zendeskapi.go
│   │   │   ├── zendeskapi_integration_test.go
│   │   │   └── zendeskapi_test.go
│   │   ├── zenkitapi/
│   │   │   ├── zenkitapi.go
│   │   │   ├── zenkitapi_integration_test.go
│   │   │   └── zenkitapi_test.go
│   │   ├── zenrows/
│   │   │   ├── zenrows.go
│   │   │   ├── zenrows_integration_test.go
│   │   │   └── zenrows_test.go
│   │   ├── zenscrape/
│   │   │   ├── zenscrape.go
│   │   │   ├── zenscrape_integration_test.go
│   │   │   └── zenscrape_test.go
│   │   ├── zenserp/
│   │   │   ├── zenserp.go
│   │   │   ├── zenserp_integration_test.go
│   │   │   └── zenserp_test.go
│   │   ├── zeplin/
│   │   │   ├── zeplin.go
│   │   │   ├── zeplin_integration_test.go
│   │   │   └── zeplin_test.go
│   │   ├── zerobounce/
│   │   │   ├── zerobounce.go
│   │   │   ├── zerobounce_integration_test.go
│   │   │   └── zerobounce_test.go
│   │   ├── zerotier/
│   │   │   ├── zerotier.go
│   │   │   ├── zerotier_integration_test.go
│   │   │   └── zerotier_test.go
│   │   ├── zipapi/
│   │   │   ├── zipapi.go
│   │   │   ├── zipapi_integration_test.go
│   │   │   └── zipapi_test.go
│   │   ├── zipbooks/
│   │   │   ├── zipbooks.go
│   │   │   ├── zipbooks_integration_test.go
│   │   │   └── zipbooks_test.go
│   │   ├── zipcodeapi/
│   │   │   ├── zipcodeapi.go
│   │   │   ├── zipcodeapi_integration_test.go
│   │   │   └── zipcodeapi_test.go
│   │   ├── zipcodebase/
│   │   │   ├── zipcodebase.go
│   │   │   ├── zipcodebase_integration_test.go
│   │   │   └── zipcodebase_test.go
│   │   ├── zohocrm/
│   │   │   ├── zohocrm.go
│   │   │   ├── zohocrm_integration_test.go
│   │   │   └── zohocrm_test.go
│   │   ├── zonkafeedback/
│   │   │   ├── zonkafeedback.go
│   │   │   ├── zonkafeedback_integration_test.go
│   │   │   └── zonkafeedback_test.go
│   │   └── zulipchat/
│   │       ├── zulipchat.go
│   │       ├── zulipchat_integration_test.go
│   │       └── zulipchat_test.go
│   ├── engine/
│   │   ├── ahocorasick/
│   │   │   ├── ahocorasickcore.go
│   │   │   └── ahocorasickcore_test.go
│   │   ├── circleci.go
│   │   ├── defaults/
│   │   │   ├── defaults.go
│   │   │   └── defaults_test.go
│   │   ├── docker.go
│   │   ├── elasticsearch.go
│   │   ├── engine.go
│   │   ├── engine_test.go
│   │   ├── filesystem.go
│   │   ├── filesystem_integration_test.go
│   │   ├── gcs.go
│   │   ├── gcs_test.go
│   │   ├── git.go
│   │   ├── git_test.go
│   │   ├── github.go
│   │   ├── github_experimental.go
│   │   ├── gitlab.go
│   │   ├── gitlab_integration_test.go
│   │   ├── huggingface.go
│   │   ├── jenkins.go
│   │   ├── json_enumerator.go
│   │   ├── metrics.go
│   │   ├── postman.go
│   │   ├── postman_test.go
│   │   ├── s3.go
│   │   ├── scan.go
│   │   ├── stdin.go
│   │   ├── syslog.go
│   │   ├── testdata/
│   │   │   ├── secrets.txt
│   │   │   ├── verificationoverlap_detectors.yaml
│   │   │   ├── verificationoverlap_secrets.txt
│   │   │   └── verificationoverlap_secrets_fp.txt
│   │   └── travisci.go
│   ├── feature/
│   │   └── feature.go
│   ├── gitparse/
│   │   ├── gitparse.go
│   │   └── gitparse_test.go
│   ├── giturl/
│   │   ├── giturl.go
│   │   └── giturl_test.go
│   ├── handlers/
│   │   ├── apk.go
│   │   ├── apk_test.go
│   │   ├── ar.go
│   │   ├── ar_test.go
│   │   ├── archive.go
│   │   ├── archive_test.go
│   │   ├── default.go
│   │   ├── default_test.go
│   │   ├── handlers.go
│   │   ├── handlers_test.go
│   │   ├── metrics.go
│   │   ├── rpm.go
│   │   ├── rpm_test.go
│   │   └── testdata/
│   │       ├── nonarchive.txt
│   │       ├── test.deb
│   │       ├── test.doc
│   │       ├── test.msg
│   │       ├── test.rpm
│   │       └── test.tgz
│   ├── hasher/
│   │   ├── blake2b.go
│   │   ├── hasher.go
│   │   └── hasher_test.go
│   ├── iobuf/
│   │   ├── bufferedreaderseeker.go
│   │   └── bufferedreaderseeker_test.go
│   ├── log/
│   │   ├── dynamic_redactor.go
│   │   ├── level.go
│   │   ├── log.go
│   │   ├── log_cores_test.go
│   │   ├── log_test.go
│   │   ├── redaction_core.go
│   │   └── suppress_caller_core.go
│   ├── output/
│   │   ├── github_actions.go
│   │   ├── json.go
│   │   ├── legacy_json.go
│   │   └── plain.go
│   ├── pb/
│   │   ├── configpb/
│   │   │   ├── config.pb.go
│   │   │   └── config.pb.validate.go
│   │   ├── credentialspb/
│   │   │   ├── credentials.pb.go
│   │   │   └── credentials.pb.validate.go
│   │   ├── custom_detectorspb/
│   │   │   ├── custom_detectors.pb.go
│   │   │   └── custom_detectors.pb.validate.go
│   │   ├── detectorspb/
│   │   │   ├── detectors.pb.go
│   │   │   └── detectors.pb.validate.go
│   │   ├── source_metadatapb/
│   │   │   ├── source_metadata.pb.go
│   │   │   └── source_metadata.pb.validate.go
│   │   └── sourcespb/
│   │       ├── sources.pb.go
│   │       └── sources.pb.validate.go
│   ├── process/
│   │   └── zombies.go
│   ├── protoyaml/
│   │   └── protoyaml.go
│   ├── roundtripper/
│   │   └── roundtripper.go
│   ├── sanitizer/
│   │   ├── utf8.go
│   │   └── utf8_test.go
│   ├── sources/
│   │   ├── chunker.go
│   │   ├── chunker_test.go
│   │   ├── circleci/
│   │   │   ├── circleci.go
│   │   │   └── circleci_test.go
│   │   ├── docker/
│   │   │   ├── README.md
│   │   │   ├── docker.go
│   │   │   ├── docker_test.go
│   │   │   ├── metrics.go
│   │   │   ├── registries.go
│   │   │   └── registries_test.go
│   │   ├── elasticsearch/
│   │   │   ├── api.go
│   │   │   ├── elasticsearch.go
│   │   │   ├── elasticsearch_integration_test.go
│   │   │   ├── unit_of_work.go
│   │   │   └── unit_of_work_test.go
│   │   ├── errors.go
│   │   ├── errors_test.go
│   │   ├── filesystem/
│   │   │   ├── filesystem.go
│   │   │   ├── filesystem_symlink_test.go
│   │   │   └── filesystem_test.go
│   │   ├── gcs/
│   │   │   ├── gcs.go
│   │   │   ├── gcs_integration_test.go
│   │   │   ├── gcs_manager.go
│   │   │   ├── gcs_manager_test.go
│   │   │   └── gcs_test.go
│   │   ├── git/
│   │   │   ├── cmd_check.go
│   │   │   ├── git.go
│   │   │   ├── git_test.go
│   │   │   ├── metrics.go
│   │   │   ├── scan_options.go
│   │   │   ├── unit.go
│   │   │   └── unit_test.go
│   │   ├── github/
│   │   │   ├── connector.go
│   │   │   ├── connector_app.go
│   │   │   ├── connector_basicauth.go
│   │   │   ├── connector_token.go
│   │   │   ├── connector_unauthenticated.go
│   │   │   ├── github.go
│   │   │   ├── github_integration_test.go
│   │   │   ├── github_test.go
│   │   │   ├── graphql.go
│   │   │   ├── metrics.go
│   │   │   ├── queries.go
│   │   │   └── repo.go
│   │   ├── github_experimental/
│   │   │   ├── github_experimental.go
│   │   │   ├── object_discovery.go
│   │   │   └── repo.go
│   │   ├── gitlab/
│   │   │   ├── gitlab.go
│   │   │   ├── gitlab_integration_test.go
│   │   │   ├── gitlab_test.go
│   │   │   ├── metrics.go
│   │   │   └── project_cache.go
│   │   ├── huggingface/
│   │   │   ├── client.go
│   │   │   ├── huggingface.go
│   │   │   ├── huggingface_client_test.go
│   │   │   ├── huggingface_test.go
│   │   │   └── repo.go
│   │   ├── jenkins/
│   │   │   ├── jenkins.go
│   │   │   ├── jenkins_integration_test.go
│   │   │   └── jenkins_test.go
│   │   ├── job_progress.go
│   │   ├── job_progress_hook.go
│   │   ├── job_progress_test.go
│   │   ├── json_enumerator/
│   │   │   ├── json_enumerator.go
│   │   │   └── json_enumerator_test.go
│   │   ├── legacy_reporters.go
│   │   ├── metrics.go
│   │   ├── mock_job_progress_test.go
│   │   ├── postman/
│   │   │   ├── metrics.go
│   │   │   ├── postman.go
│   │   │   ├── postman_client.go
│   │   │   ├── postman_test.go
│   │   │   ├── substitution.go
│   │   │   └── substitution_test.go
│   │   ├── resume.go
│   │   ├── resume_test.go
│   │   ├── s3/
│   │   │   ├── checkpointer.go
│   │   │   ├── checkpointer_test.go
│   │   │   ├── metrics.go
│   │   │   ├── s3.go
│   │   │   ├── s3_integration_test.go
│   │   │   ├── s3_test.go
│   │   │   ├── unit.go
│   │   │   └── unit_test.go
│   │   ├── source_manager.go
│   │   ├── source_manager_test.go
│   │   ├── source_unit.go
│   │   ├── sources.go
│   │   ├── sources_test.go
│   │   ├── stdin/
│   │   │   └── stdin.go
│   │   ├── syslog/
│   │   │   ├── syslog.go
│   │   │   └── syslog_test.go
│   │   ├── test_helpers.go
│   │   └── travisci/
│   │       ├── travisci.go
│   │       └── travisci_test.go
│   ├── sourcestest/
│   │   └── sourcestest.go
│   ├── tui/
│   │   ├── common/
│   │   │   ├── common.go
│   │   │   ├── component.go
│   │   │   ├── error.go
│   │   │   ├── style.go
│   │   │   └── utils.go
│   │   ├── components/
│   │   │   ├── confirm/
│   │   │   │   └── confirm.go
│   │   │   ├── footer/
│   │   │   │   └── footer.go
│   │   │   ├── formfield/
│   │   │   │   └── formfield.go
│   │   │   ├── header/
│   │   │   │   └── header.go
│   │   │   ├── selector/
│   │   │   │   └── selector.go
│   │   │   ├── statusbar/
│   │   │   │   └── statusbar.go
│   │   │   ├── tabs/
│   │   │   │   └── tabs.go
│   │   │   ├── textinput/
│   │   │   │   └── textinput.go
│   │   │   ├── textinputs/
│   │   │   │   └── textinputs.go
│   │   │   └── viewport/
│   │   │       └── viewport.go
│   │   ├── keymap/
│   │   │   └── keymap.go
│   │   ├── pages/
│   │   │   ├── analyze_form/
│   │   │   │   └── analyze_form.go
│   │   │   ├── analyze_keys/
│   │   │   │   └── analyze_keys.go
│   │   │   ├── contact_enterprise/
│   │   │   │   └── contact_enterprise.go
│   │   │   ├── source_configure/
│   │   │   │   ├── item.go
│   │   │   │   ├── run_component.go
│   │   │   │   ├── source_component.go
│   │   │   │   ├── source_configure.go
│   │   │   │   ├── trufflehog_component.go
│   │   │   │   └── trufflehog_configure.go
│   │   │   ├── source_select/
│   │   │   │   ├── item.go
│   │   │   │   └── source_select.go
│   │   │   ├── view_oss/
│   │   │   │   └── view_oss.go
│   │   │   └── wizard_intro/
│   │   │       ├── item.go
│   │   │       └── wizard_intro.go
│   │   ├── sources/
│   │   │   ├── circleci/
│   │   │   │   └── circleci.go
│   │   │   ├── docker/
│   │   │   │   └── docker.go
│   │   │   ├── elasticsearch/
│   │   │   │   └── elasticsearch.go
│   │   │   ├── filesystem/
│   │   │   │   └── filesystem.go
│   │   │   ├── gcs/
│   │   │   │   └── gcs.go
│   │   │   ├── git/
│   │   │   │   └── git.go
│   │   │   ├── github/
│   │   │   │   └── github.go
│   │   │   ├── gitlab/
│   │   │   │   └── gitlab.go
│   │   │   ├── huggingface/
│   │   │   │   └── huggingface.go
│   │   │   ├── jenkins/
│   │   │   │   └── jenkins.go
│   │   │   ├── postman/
│   │   │   │   └── postman.go
│   │   │   ├── s3/
│   │   │   │   └── s3.go
│   │   │   ├── sources.go
│   │   │   └── syslog/
│   │   │       └── syslog.go
│   │   ├── styles/
│   │   │   └── styles.go
│   │   └── tui.go
│   ├── updater/
│   │   └── updater.go
│   ├── verificationcache/
│   │   ├── in_memory_metrics.go
│   │   ├── metrics_reporter.go
│   │   ├── result_cache.go
│   │   ├── verification_cache.go
│   │   └── verification_cache_test.go
│   ├── version/
│   │   └── version.go
│   └── writers/
│       ├── buffer_writer/
│       │   ├── bufferwriter.go
│       │   ├── bufferwriter_test.go
│       │   └── metrics.go
│       └── buffered_file_writer/
│           ├── bufferedfilewriter.go
│           ├── bufferedfilewriter_test.go
│           └── metrics.go
├── proto/
│   ├── config.proto
│   ├── credentials.proto
│   ├── custom_detectors.proto
│   ├── detectors.proto
│   ├── source_metadata.proto
│   └── sources.proto
└── scripts/
    ├── gen_proto.sh
    ├── install.sh
    ├── test-last-changed-detector.sh
    └── test_changed_detectors.sh

================================================
FILE CONTENTS
================================================

================================================
FILE: .captain/config.yaml
================================================
test-suites:
  detectors:
    command: gotestsum --jsonfile tmp/go-test.json --raw-command -- go test -tags=detectors -timeout=15m -json -count=1 -vet=off ./pkg/detectors/...
    results:
      path: tmp/go-test.json
    output:
      print-summary: true
    ## No retries right now
    # retries:
    #   attempts: 3
    #   command: gotestsum --raw-command --jsonfile tmp/go-test.json -- go test -tags=detectors -timeout=15m -json -count=1 -vet=off {{ package }} -run '{{ run }}'


================================================
FILE: .gitattributes
================================================
*.go text eol=lf
*.md text eol=lf

================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ""
labels: bug, needs triage
assignees: trufflesecurity/product-eng
---

Please review the [Community Note](https://github.com/trufflesecurity/trufflehog/blob/main/.github/community_note.md) before submitting

### TruffleHog Version
<!--- Please run `trufflehog --version` to show the version. If you are not running the latest version, please upgrade because your issue may have already been fixed. --->

### Trace Output

<!---
Please provide a link to a GitHub Gist containing the complete debug output. Please do NOT paste the debug output in the issue; just paste a link to the Gist.

To obtain the trace output, run trufflehog with the --log-level=5 flag.
--->

### Expected Behavior

<!--- What should have happened? --->

### Actual Behavior

<!--- What actually happened? --->

### Steps to Reproduce

<!--- Please list the steps required to reproduce the issue. --->
 1. Go to '...'
 2. Click on '....'
 3. Scroll down to '....'
 4. See error

## Environment
 * OS: [e.g. iOS]
 * Version [e.g. 22]

## Additional Context
<!--- Add any other context about the problem here. --->

### References

<!---
Information about referencing Github Issues: https://help.github.com/articles/basic-writing-and-formatting-syntax/#referencing-issues-and-pull-requests

Are there any other GitHub issues (open or closed) or pull requests that should be linked here? Vendor documentation? For example:
--->

* #0000



================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ""
labels: enhancement, needs triage
assignees: trufflesecurity/product-eng
---

Please review the [Community Note](https://github.com/trufflesecurity/trufflehog/blob/main/.github/community_note.md) before submitting

## Description
<!--- Please leave a helpful description of the feature request here. --->

### Preferred Solution
<!--- A clear and concise description of what you want to happen. What
information may be required and what would be the preferred way to provide it?
What should the output include? --->

### Additional Context
<!--- Add any other context or screenshots about the feature request here. --->

#### References

<!---
Information about referencing Github Issues: https://help.github.com/articles/basic-writing-and-formatting-syntax/#referencing-issues-and-pull-requests

Are there any other GitHub issues (open or closed) or pull requests that should be linked here? Vendor blog posts or documentation? For example:

* #0000
--->




================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!--
Please create an issue to collect feedback prior to feature additions. Please also reference that issue in any PRs.
If possible try to keep PRs scoped to one feature, and add tests for new features.
-->

### Description:
Explain the purpose of the PR.

### Checklist:
* [ ] Tests passing (`make test-community`)?
* [ ] Lint passing (`make lint` this requires [golangci-lint](https://golangci-lint.run/welcome/install/#local-installation))?


================================================
FILE: .github/community_note.md
================================================
## Community Note

Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request.

Please do not leave "+1" or other comments that do not add relevant new information or questions, they generate extra noise for issue followers and do not help prioritize the request.

If you are interested in working on this issue or have submitted a pull request, please leave a comment.


================================================
FILE: .github/renovate.json
================================================
{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": [
    "config:base"
  ],
  "prConcurrentLimit": 3,
  "prHourlyLimit": 2
}


================================================
FILE: .github/workflows/README.md
================================================
# GitHub Workflows

This directory contains GitHub Actions workflows for the TruffleHog repository.

## PR Approval Check (`pr-approval-check.yml`)

This workflow enforces that at least one PR approver must be an **active** member of the `@trufflesecurity/product-eng` team or any of its child teams.

### How it works:

1. **Triggers**: The workflow runs on:
   - `pull_request_review` events when a review is submitted (`submitted` type)
   - `pull_request` events when a PR is opened, reopened, or synchronized (`opened`, `reopened`, `synchronize` types)

2. **Approval Check Process**: The workflow:
   - Fetches all reviews for the PR using the GitHub API
   - Filters for reviews with state `APPROVED`
   - Gets all child teams of `@trufflesecurity/product-eng` using `listChildInOrg` API
   - Checks if any approver is an **active** member (not pending) of either:
     - The parent `@trufflesecurity/product-eng` team, OR
     - Any of its child teams
   - Sets a commit status accordingly

3. **Status Check**: Creates a commit status named `product-eng-approval` with:
   - ✅ **Success**: When at least one approver is an active member of `@trufflesecurity/product-eng` or any child team
   - ❌ **Failure**: When there are no approvals or there are approvals but none from active `@trufflesecurity/product-eng` members

### Error Handling

If there are errors listing reviews or checking team membership, the workflow reports a failure status and also fails itself.

### Branch Protection

To make this check required:

1. Go to Settings → Branches
2. Add or edit a branch protection rule for your main branch
3. Enable "Require status checks to pass before merging"
4. Add `pr-approval-check` to the required status checks

### Permissions

The workflow uses the default `GITHUB_TOKEN` which has sufficient permissions to:
- Read PR reviews
- List child teams and check team membership (for public teams)
- Create commit statuses

**Note**: If the `product-eng` team or its child teams are private, you may need to use a personal access token with appropriate permissions. The Github API returns 404 for non-members and for lack of permissions.

================================================
FILE: .github/workflows/TESTING.md
================================================
# Testing

Most testing is handled automatically by our GitHub Actions workflows.

## Local GitHub Action Testing

In some cases you may wish to submit changes to the Trufflehog GitHub Action. Unfortunately GitHub does not provide a 1st-party testing environment for testing actions outside of GitHub Actions.

Fortunately [nektos/act](https://github.com/nektos/act) enables local testing of GitHub Actions.

### Instructions

1. Please follow [the installation instructions](http://https://github.com/nektos/act#installation) for your OS.
2. The first run of `act` will ask you to specify an image. `Medium` should suffice.
3. You'll need to configure a personal-access-token(PAT) with: `repo:status`, `repo_deployment`, and `public_repo` permissions.
4. Set an environment variable named `GITHUB_TOKEN` with the PAT from the previous step as the value: `$ export GITHUB_TOKEN=<your_PAT>`
5. Run the following command from the repository root: `act pull_request -j test -W .github/workflows/secrets.yml -s GITHUB_TOKEN --defaultbranch main`
6. If the job was successful, you should expect to see output from the scanner showing several detected secrets.
7. If you want to omit the context of a pull request event and just test that the action starts successfully, run: `act -j test -W .github/workflows/secrets.yml -s GITHUB_TOKEN --defaultbranch main`


================================================
FILE: .github/workflows/codeql-analysis.yml
================================================
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"

on:
  push:
    branches: [main]
  pull_request:
    # The branches below must be a subset of the branches above
    branches: [main]
  schedule:
    - cron: "35 11 * * 2"

jobs:
  analyze:
    name: Analyze
    runs-on: ubuntu-latest
    permissions:
      actions: read
      contents: read
      security-events: write

    strategy:
      fail-fast: false
      matrix:
        language: ["go"]
        # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
        # Learn more about CodeQL language support at https://git.io/codeql-language-support

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
      - name: Install Go
        uses: actions/setup-go@v5
        with:
          go-version: "1.24"
      # Initializes the CodeQL tools for scanning.
      - name: Initialize CodeQL
        uses: github/codeql-action/init@v3
        with:
          languages: ${{ matrix.language }}
          # If you wish to specify custom queries, you can do so here or in a config file.
          # By default, queries listed here will override any specified in a config file.
          # Prefix the list here with "+" to use these queries and those in the config file.
          # queries: ./path/to/local/query, your-org/your-repo/queries@main
      - name: Smoke
        run: |
          go build .
      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v3


================================================
FILE: .github/workflows/detector-tests.yml
================================================
name: Detectors Aggregation

on:
  workflow_dispatch:
  schedule:
    - cron: "0 8 * * *"

jobs:
  test-detectors:
    if: ${{ github.repository == 'trufflesecurity/trufflehog' }}
    runs-on: ubuntu-latest
    permissions:
      actions: "read"
      contents: "read"
      id-token: "write"
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-go@v5
      - name: Install gotestsum
        uses: jaxxstorm/action-install-gh-release@v1.14.0
        with:
          repo: gotestyourself/gotestsum
      - uses: rwx-research/setup-captain@v1
      - name: Test Go
        run: |
          export CGO_ENABLED=1
          captain run detectors
        env:
          RWX_ACCESS_TOKEN: ${{ secrets.RWX_ACCESS_TOKEN }}


================================================
FILE: .github/workflows/lint.yml
================================================
name: Lint

on:
  push:
    tags:
      - v*
  pull_request:

permissions:
  contents: read
  pull-requests: read

jobs:
  golangci-lint:
    name: golangci-lint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-go@v5
        with:
          go-version: "1.24"
      - name: golangci-lint
        uses: golangci/golangci-lint-action@v6
        with:
          # Optional: version of golangci-lint to use in form of v1.2 or v1.2.3 or `latest` to use the latest version
          version: latest
          # Optional: working directory, useful for monorepos
          # working-directory: somedir

          # Optional: golangci-lint command line arguments.
          args: --enable bodyclose --enable copyloopvar --enable misspell --timeout 10m

          # Optional: if set to true then the action don't cache or restore ~/go/pkg.
          # skip-pkg-cache: true

          # Optional: if set to true then the action don't cache or restore ~/.cache/go-build.
          # skip-build-cache: true
  semgrep:
    name: semgrep
    runs-on: ubuntu-latest
    container:
      image: returntocorp/semgrep
    if: (github.actor != 'dependabot[bot]')
    steps:
      - uses: actions/checkout@v4
      - run: semgrep --config=hack/semgrep-rules/detectors.yaml pkg/detectors/


================================================
FILE: .github/workflows/performance.yml
================================================
name: Performance Test

on: [pull_request]

jobs:
  speed:
    #   skip if PR is from a fork.
    # TODO: this could probabaly be refactored a bit so that it runs on forks
    if: ${{ ! github.event.pull_request.head.repo.fork }}

    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
          ref: ${{ github.head_ref }}

      - name: Install Go
        uses: actions/setup-go@v5
        with:
          go-version: "1.24"

      - name: Run Head
        run: |
          go build -o current .
          repo_tmp=$(mktemp -d)
          git clone https://github.com/trufflesecurity/trufflehog.git $repo_tmp
          cd $repo_tmp
          git checkout v3.75.1

          user_time_sum=0

          for i in {1..5}
          do
            tmpfile=$(mktemp)
            /usr/bin/time -o $tmpfile $GITHUB_WORKSPACE/current filesystem "$repo_tmp" --no-verification --no-update > out.txt
            cat $tmpfile
            time_output=$(cat $tmpfile)
            rm $tmpfile
            user_time=$(echo $time_output | awk '{print $1}' | sed 's/user//')

            # Add the user time to the sum
            user_time_sum=$(echo "$user_time_sum + $user_time" | bc)
          done

          average_user_time=$(echo "scale=3; $user_time_sum / 5" | bc)
          echo HEAD_TIME=$average_user_time >> $GITHUB_ENV

      - name: Figure out previous tag
        run: |
          git fetch --tags
          git tag -l --sort=-v:refname | head -n 1 > previous_tag.txt
          echo PREVIOUS_TAG=$(cat previous_tag.txt) >> $GITHUB_ENV

      - name: Checkout code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
          ref: ${{ env.PREVIOUS_TAG }}

      - name: Run Previous
        run: |
          go build -o previous .
          repo_tmp=$(mktemp -d)
          git clone https://github.com/trufflesecurity/trufflehog.git $repo_tmp
          cd $repo_tmp
          git checkout v3.75.1

          user_time_sum=0

          for i in {1..5}
          do
            tmpfile=$(mktemp)
            /usr/bin/time -o $tmpfile $GITHUB_WORKSPACE/previous filesystem "$repo_tmp" --no-verification --no-update > out.txt
            cat $tmpfile
            time_output=$(cat $tmpfile)
            rm $tmpfile
            user_time=$(echo $time_output | awk '{print $1}' | sed 's/user//')

            # Add the user time to the sum
            user_time_sum=$(echo "$user_time_sum + $user_time" | bc)
          done

          average_user_time=$(echo "scale=3; $user_time_sum / 5" | bc)
          echo PREVIOUS_TIME=$average_user_time >> $GITHUB_ENV

      - name: Compare Results
        run: |
          echo "head ($GITHUB_SHA) avg time (n=5): $HEAD_TIME"
          echo "$PREVIOUS_TAG avg time (n=5): $PREVIOUS_TIME"
          if [ $(echo "$HEAD_TIME > $PREVIOUS_TIME * 1.5" | bc) -eq 1 ]
          then
            echo "HEAD run time is at least 10% slower than PREVIOUS run time"
            exit 1
          fi


================================================
FILE: .github/workflows/release-guard.yml
================================================
name: Release Guard
on:
  release:
    types: [created]

permissions:
  contents: write

jobs:
  unset-latest:
    runs-on: ubuntu-latest
    steps:
      - name: Restore previous release as latest if needed
        run: |
          LATEST_TAG=$(gh release list --json tagName,isLatest -q '.[] | select(.isLatest) | .tagName')
          if [ "$LATEST_TAG" != "${{ github.event.release.tag_name }}" ]; then
            echo "Release is not marked as latest (latest is $LATEST_TAG), skipping."
            exit 0
          fi

          echo "Release ${{ github.event.release.tag_name }} is marked as latest, finding previous release..."

          # Get the second release in the list (sorted by date, excluding drafts/prereleases by default)
          # The first one is the current release, so we want the second one
          PREVIOUS_TAG=$(gh release list --exclude-drafts --exclude-pre-releases --json tagName -q '.[1].tagName')

          if [ -z "$PREVIOUS_TAG" ]; then
            echo "No previous release found, cannot restore. Exiting."
            exit 0
          fi

          echo "Restoring $PREVIOUS_TAG as latest..."
          gh release edit "$PREVIOUS_TAG" --latest
        env:
          GH_TOKEN: ${{ github.token }}


================================================
FILE: .github/workflows/release.yml
================================================
name: Release

on:
  push:
    tags:
      - v*

permissions:
  contents: write
  packages: write
  id-token: write

jobs:
  Release:
    runs-on: ubuntu-latest
    env:
      DOCKER_CLI_EXPERIMENTAL: "enabled"
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v3
      - name: Docker Login to DockerHub
        uses: docker/login-action@v3
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Docker Login to GitHub Container Registry
        uses: docker/login-action@v3
        with:
          registry: ghcr.io
          username: ${{ github.repository_owner }}
          password: ${{ secrets.GITHUB_TOKEN }}
      - name: Set up Go
        uses: actions/setup-go@v5
        with:
          go-version: "1.24"
      - name: Cosign install
        uses: sigstore/cosign-installer@d58896d6a1865668819e1d91763c7751a165e159 # v3.9.2
      - name: Install UPX
        run: |
          sudo apt-get update
          sudo apt-get install -y upx
      - name: Run GoReleaser
        uses: goreleaser/goreleaser-action@v6
        with:
          distribution: goreleaser-pro
          version: latest
          args: release --clean
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          HOMEBREW_TAP_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }}
          GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
      - name: Mark release as latest
        run: gh release edit ${{ github.ref_name }} --latest
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .github/workflows/secrets.yml
================================================
name: Scan for secrets

on:
  push:
    tags:
      - v*
    branches:
      - main
  pull_request:
  workflow_dispatch:

jobs:
  test:
    if: ${{ github.repository == 'trufflesecurity/trufflehog' && !github.event.pull_request.head.repo.fork }}
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
          ref: ${{ github.head_ref }}
      - name: Dogfood
        uses: ./
        id: dogfood
        with:
          extra_args: --results=verified


================================================
FILE: .github/workflows/smoke.yml
================================================
name: Smoke

on:
  pull_request:

jobs:
  smoke:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Install Go
        uses: actions/setup-go@v5
        with:
          go-version: "1.24"
      - name: Smoke
        run: |
          set -e
          go run . git https://github.com/dustin-decker/secretsandstuff.git > /dev/null
          go run . github --repo https://github.com/dustin-decker/secretsandstuff.git > /dev/null
  zombies:
    runs-on: ubuntu-latest
    timeout-minutes: 5
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Install Go
        uses: actions/setup-go@v5
        with:
          go-version: "1.24"
      - name: Run trufflehog
        run: |
          set -e
          go run . git --no-verification file://. > /dev/null
          # This case previously had a deadlock issue and left zombies after trufflehog exited #3379
          go run . git --no-verification https://github.com/git-test-fixtures/binary.git > /dev/null
      - name: Check for running git processes and zombies
        run: |
          if pgrep -x "git" > /dev/null
          then
            echo "Git processes are still running"
            exit 1
          else
            echo "No git processes found"
          fi

          if ps -A -ostat,ppid | grep -e '[zZ]' > /dev/null
          then
            echo "Zombie processes found"
            exit 1
          else
            echo "No zombie processes found"
          fi


================================================
FILE: .github/workflows/test.yml
================================================
name: Test

on:
  push:
    tags:
      - v*
    branches:
      - main
  pull_request:

jobs:
  test:
    if: ${{ github.repository == 'trufflesecurity/trufflehog' && !github.event.pull_request.head.repo.fork }}
    runs-on: ubuntu-latest
    permissions:
      actions: "read"
      contents: "read"
      id-token: "write"
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Install Go
        uses: actions/setup-go@v5
        with:
          go-version: "1.24"
      - id: "auth"
        uses: "google-github-actions/auth@v2"
        with:
          workload_identity_provider: "projects/811013774421/locations/global/workloadIdentityPools/github-pool/providers/github-provider"
          service_account: "github-ci-external@trufflehog-testing.iam.gserviceaccount.com"
      - name: Set up gotestsum
        run: |
          go install gotest.tools/gotestsum@latest
          mkdir -p tmp/test-results
      - name: Test
        run: |
          CGO_ENABLED=1 gotestsum --junitfile tmp/test-results/test.xml --raw-command -- go test -json -tags=sources $(go list ./... | grep -v /vendor/ | grep -v pkg/analyzer/analyzers)
        if: ${{ success() || failure() }} # always run this step, even if there were previous errors
      - name: Upload test results to BuildPulse for flaky test detection
        if: ${{ !cancelled() }} # Run this step even when the tests fail. Skip if the workflow is cancelled.
        uses: buildpulse/buildpulse-action@main
        with:
          account: 79229934
          repository: 77726177
          path: |
            tmp/test-results/*.xml
          key: ${{ secrets.BUILDPULSE_ACCESS_KEY_ID }}
          secret: ${{ secrets.BUILDPULSE_SECRET_ACCESS_KEY }}
          tags: integration
      - name: Annotate test results
        uses: mikepenz/action-junit-report@v5
        if: success() || failure() # always run even if the previous step fails
        with:
          report_paths: "tmp/test-results/*.xml"
  test-community:
    if: ${{ github.event.pull_request.head.repo.fork }}
    runs-on: ubuntu-latest
    permissions:
      actions: "read"
      contents: "read"
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
      - name: Install Go
        uses: actions/setup-go@v5
        with:
          go-version: "1.24"
      - name: Test
        run: make test-community


================================================
FILE: .gitignore
================================================
.idea
dist
.env
*.test

# binary
trufflehog
tmp/go-test.json
.captain/detectors/timings.yaml
.captain/detectors/quarantines.yaml
.captain/detectors/flakes.yaml
.vscode


================================================
FILE: .goreleaser.yml
================================================
version: 2
release:
  make_latest: false
builds:
  - id: trufflehog-upx
    binary: trufflehog
    ldflags:
      - -s -w -X 'github.com/trufflesecurity/trufflehog/v3/pkg/version.BuildVersion={{ .Version }}'
    env: [CGO_ENABLED=0]
    goos:
    - linux
    goarch:
    - amd64
    - arm64
    hooks:
      post:
        - upx -q "{{ .Path }}"
  - id: trufflehog
    binary: trufflehog
    ldflags:
      - -X 'github.com/trufflesecurity/trufflehog/v3/pkg/version.BuildVersion={{ .Version }}'
    env: [CGO_ENABLED=0]
    goos:
    - darwin
    - windows
    goarch:
    - amd64
    - arm64
dockers:
  - image_templates: ["trufflesecurity/{{ .ProjectName }}:{{ .Version }}-amd64"]
    dockerfile: Dockerfile.goreleaser
    extra_files:
    - entrypoint.sh
    use: buildx
    build_flag_templates:
    - --platform=linux/amd64
    - --label=org.opencontainers.image.title={{ .ProjectName }}
    - --label=org.opencontainers.image.description={{ .ProjectName }}
    - --label=org.opencontainers.image.url=https://github.com/trufflesecurity/{{ .ProjectName }}
    - --label=org.opencontainers.image.source=https://github.com/trufflesecurity/{{ .ProjectName }}
    - --label=org.opencontainers.image.version={{ .Version }}
    - --label=org.opencontainers.image.revision={{ .FullCommit }}
    - --label=org.opencontainers.image.licenses=AGPL-3.0
    - --provenance=false
  - image_templates: ["trufflesecurity/{{ .ProjectName }}:{{ .Version }}-arm64v8"]
    goarch: arm64
    dockerfile: Dockerfile.goreleaser
    extra_files:
    - entrypoint.sh
    use: buildx
    build_flag_templates:
    - --platform=linux/arm64/v8
    - --label=org.opencontainers.image.title={{ .ProjectName }}
    - --label=org.opencontainers.image.description={{ .ProjectName }}
    - --label=org.opencontainers.image.url=https://github.com/trufflesecurity/{{ .ProjectName }}
    - --label=org.opencontainers.image.source=https://github.com/trufflesecurity/{{ .ProjectName }}
    - --label=org.opencontainers.image.version={{ .Version }}
    - --label=org.opencontainers.image.revision={{ .FullCommit }}
    - --label=org.opencontainers.image.licenses=AGPL-3.0
    - --provenance=false
  - image_templates: ["ghcr.io/trufflesecurity/{{ .ProjectName }}:{{ .Version }}-amd64"]
    dockerfile: Dockerfile.goreleaser
    extra_files:
    - entrypoint.sh
    use: buildx
    build_flag_templates:
    - --platform=linux/amd64
    - --label=org.opencontainers.image.title={{ .ProjectName }}
    - --label=org.opencontainers.image.description={{ .ProjectName }}
    - --label=org.opencontainers.image.url=https://github.com/trufflesecurity/{{ .ProjectName }}
    - --label=org.opencontainers.image.source=https://github.com/trufflesecurity/{{ .ProjectName }}
    - --label=org.opencontainers.image.version={{ .Version }}
    - --label=org.opencontainers.image.revision={{ .FullCommit }}
    - --label=org.opencontainers.image.licenses=AGPL-3.0
    - --provenance=false
  - image_templates: ["ghcr.io/trufflesecurity/{{ .ProjectName }}:{{ .Version }}-arm64v8"]
    goarch: arm64
    dockerfile: Dockerfile.goreleaser
    extra_files:
    - entrypoint.sh
    use: buildx
    build_flag_templates:
    - --platform=linux/arm64/v8
    - --label=org.opencontainers.image.title={{ .ProjectName }}
    - --label=org.opencontainers.image.description={{ .ProjectName }}
    - --label=org.opencontainers.image.url=https://github.com/trufflesecurity/{{ .ProjectName }}
    - --label=org.opencontainers.image.source=https://github.com/trufflesecurity/{{ .ProjectName }}
    - --label=org.opencontainers.image.version={{ .Version }}
    - --label=org.opencontainers.image.revision={{ .FullCommit }}
    - --label=org.opencontainers.image.licenses=AGPL-3.0
    - --provenance=false
docker_manifests:
  - name_template: trufflesecurity/{{ .ProjectName }}:{{ .Version }}
    image_templates:
    - trufflesecurity/{{ .ProjectName }}:{{ .Version }}-amd64
    - trufflesecurity/{{ .ProjectName }}:{{ .Version }}-arm64v8
  - name_template: trufflesecurity/{{ .ProjectName }}:latest
    image_templates:
    - trufflesecurity/{{ .ProjectName }}:{{ .Version }}-amd64
    - trufflesecurity/{{ .ProjectName }}:{{ .Version }}-arm64v8
  - name_template: ghcr.io/trufflesecurity/{{ .ProjectName }}:{{ .Version }}
    image_templates:
    - ghcr.io/trufflesecurity/{{ .ProjectName }}:{{ .Version }}-amd64
    - ghcr.io/trufflesecurity/{{ .ProjectName }}:{{ .Version }}-arm64v8
  - name_template: ghcr.io/trufflesecurity/{{ .ProjectName }}:latest
    image_templates:
    - ghcr.io/trufflesecurity/{{ .ProjectName }}:{{ .Version }}-amd64
    - ghcr.io/trufflesecurity/{{ .ProjectName }}:{{ .Version }}-arm64v8
brews:
  - repository:
      owner: trufflesecurity
      name: homebrew-trufflehog
      token: "{{ .Env.HOMEBREW_TAP_TOKEN }}"
    description: "Find credentials all over the place"
    name: "trufflehog"
    homepage: "https://github.com/trufflesecurity/trufflehog"
    install: |
      bin.install "trufflehog"
signs:
  - cmd: cosign
    signature: "${artifact}.sig"
    certificate: "${artifact}.pem"
    args: 
      - "sign-blob"
      - "--oidc-issuer=https://token.actions.githubusercontent.com"
      - "--output-certificate=${certificate}"
      - "--output-signature=${signature}"
      - "${artifact}"
      - "--yes"
    artifacts: checksum


================================================
FILE: .pre-commit-config.yaml
================================================
repos:
  - repo: https://github.com/rhysd/actionlint
    rev: v1.6.24
    hooks:
      - id: actionlint

  - repo: https://github.com/mpalmer/action-validator
    rev: v0.5.1
    hooks:
      - id: action-validator


================================================
FILE: .pre-commit-hooks.yaml
================================================
- id: trufflehog
  name: TruffleHog
  description: Detect secrets in your data with TruffleHog.
  entry: trufflehog git file://. --since-commit HEAD --results=verified --fail --trust-local-git-config
  language: golang
  pass_filenames: false


================================================
FILE: CODEOWNERS
================================================
# catch-all
* @trufflesecurity/product-eng

# Scanning
pkg/sources/ @trufflesecurity/Scanning
pkg/writers/ @trufflesecurity/Scanning

# Integrations
pkg/sources/circleci/ @trufflesecurity/Integrations
pkg/sources/docker/ @trufflesecurity/Integrations
pkg/sources/elasticsearch/ @trufflesecurity/Integrations
pkg/sources/filesystem/ @trufflesecurity/Integrations
pkg/sources/gcs/ @trufflesecurity/Integrations
pkg/sources/git/ @trufflesecurity/Integrations
pkg/sources/github/ @trufflesecurity/Integrations
pkg/sources/gitlab/ @trufflesecurity/Integrations
pkg/sources/jenkins/ @trufflesecurity/Integrations
pkg/sources/postman/ @trufflesecurity/Integrations
pkg/sources/s3/ @trufflesecurity/Integrations
pkg/sources/travisci/ @trufflesecurity/Integrations

# Shared
pkg/decoders/ @trufflesecurity/Scanning @trufflesecurity/OSS
pkg/engine/ @trufflesecurity/Scanning  @trufflesecurity/OSS
pkg/gitparse/ @trufflesecurity/Scanning  @trufflesecurity/OSS
pkg/giturl/ @trufflesecurity/Scanning  @trufflesecurity/OSS
pkg/handlers/ @trufflesecurity/Scanning  @trufflesecurity/OSS
pkg/iobuf/ @trufflesecurity/Scanning  @trufflesecurity/OSS
pkg/sanitizer/ @trufflesecurity/Scanning  @trufflesecurity/OSS
proto/ @trufflesecurity/Scanning  @trufflesecurity/Integrations

# OSS
pkg/detectors/ @trufflesecurity/OSS
pkg/common/ @trufflesecurity/OSS
pkg/custom_detectors/ @trufflesecurity/OSS
pkg/analyzer/ @trufflesecurity/OSS
pkg/engine/defaults/defaults.go @trufflesecurity/OSS
pkg/engine/defaults/defaults_test.go @trufflesecurity/OSS

# critical detectors
pkg/detectors/aws/ @trufflesecurity/backend
pkg/detectors/gcp/ @trufflesecurity/backend
pkg/detectors/azure/ @trufflesecurity/backend
pkg/detectors/okta/ @trufflesecurity/backend
pkg/detectors/privatekey/ @trufflesecurity/backend
pkg/detectors/slack/ @trufflesecurity/backend
pkg/detectors/slackwebhook/ @trufflesecurity/backend
pkg/detectors/microsoftteamswebhook/ @trufflesecurity/backend
pkg/detectors/twilio/ @trufflesecurity/backend
pkg/detectors/sendgrid/ @trufflesecurity/backend
pkg/detectors/gitlab/ @trufflesecurity/backend
pkg/detectors/gitlabv2/ @trufflesecurity/backend
pkg/detectors/github/ @trufflesecurity/backend
pkg/detectors/github_old/ @trufflesecurity/backend
pkg/detectors/githubapp/ @trufflesecurity/backend


================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct

## Our Pledge

In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment
include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or
 advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
 address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
 professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.

## Scope

This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at community@trufflesec.com. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq


================================================
FILE: CONTRIBUTING.md
================================================
# Contribution guidelines

Please create an issue to collect feedback prior to feature additions. If possible try to keep PRs scoped to one feature, and add tests for new features. We use the fork-based contribution model described by [GitHub's documentation](https://docs.github.com/en/get-started/exploring-projects-on-github/contributing-to-a-project). (In short: Fork the TruffleHog repo and open a PR back from your fork into our default branch.)

When showing interest in a bug, enhancement, PR, or issue, please use the thumbs up/thumbs down emoji on the original message rather than adding comments expressing the same.

Contributors need to [sign our CLA](https://cla-assistant.io/trufflesecurity/trufflehog) before we are able to accept contributions.

# Resources

## How things work

It can be a bit daunting diving into the code and wrapping your head around the project from a high level.  The following two docs help give that high level overview:
* [Process Flow](docs/process_flow.md)
* [Concurrency Overview](docs/concurrency.md)

## Adding new secret detectors

We have published some [documentation and tooling to get started on adding new secret detectors](hack/docs/Adding_Detectors_external.md). Let's improve detection together!

## Logging in TruffleHog

**Use fields over format strings**. For structured logging, fields allow us to better filter and search through logs than embedding data in the message.

**Differentiate logs coming from dependencies**. This can be done with a `"dep"` field that gets passed to the library. Sometimes it’s not possible to do this.

Limit log levels to _**info**_ (indicate normal or expected operation) and _**error**_ (functionality is impeded and should be checked by an engineer)

**Choose an appropriate verbosity level**
```
0. — logs we always want to see
1. — logs we could possibly want to turn off
2. — logs that are useful for debugging
3. — frequently called logs that may produce a lot of output
4. — extremely verbose logs or logs containing sensitive information
5. — ultimate verbosity
```
Example: `Logger().V(2).Info("skipping file: extension is ignored", "ext", mimeExt)`

**Either log an error or return it**. Doing one or the other will help defer logging for when there is more context for it and prevent duplicate “bubbling up” logs.

**Log contextual information**. Every log emitted should contain this context via fields to easily filter and search.


================================================
FILE: Dockerfile
================================================
FROM --platform=${BUILDPLATFORM} golang:bullseye as builder

WORKDIR /build
COPY . . 
ENV CGO_ENABLED=0
ARG TARGETOS TARGETARCH
RUN  --mount=type=cache,target=/go/pkg/mod \
     --mount=type=cache,target=/root/.cache/go-build \
     GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build -o trufflehog .

FROM alpine:3.22
RUN apk add --no-cache bash git openssh-client ca-certificates rpm2cpio binutils cpio \
    && rm -rf /var/cache/apk/* && update-ca-certificates
COPY --from=builder /build/trufflehog /usr/bin/trufflehog
COPY entrypoint.sh /etc/entrypoint.sh
RUN chmod +x /etc/entrypoint.sh
ENTRYPOINT ["/etc/entrypoint.sh"]


================================================
FILE: Dockerfile.goreleaser
================================================
FROM alpine:3.22

RUN apk add --no-cache bash git openssh-client ca-certificates \
    && rm -rf /var/cache/apk/* && update-ca-certificates
WORKDIR /usr/bin/
COPY trufflehog .
COPY entrypoint.sh /etc/entrypoint.sh
RUN chmod +x /etc/entrypoint.sh
ENTRYPOINT ["/etc/entrypoint.sh"]


================================================
FILE: LICENSE
================================================
 GNU AFFERO GENERAL PUBLIC LICENSE
                       Version 3, 19 November 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.

  A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate.  Many developers of free software are heartened and
encouraged by the resulting cooperation.  However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.

  The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community.  It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server.  Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.

  An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals.  This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU Affero General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Remote Network Interaction; Use with the GNU General Public License.

  Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software.  This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU Affero General Public License from time to time.  Such new versions
will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as published
    by the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Affero General Public License for more details.

    You should have received a copy of the GNU Affero General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

  If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source.  For example, if your program is a web application, its
interface could display a "Source" link that leads users to an archive
of the code.  There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for the
specific requirements.

  You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
<https://www.gnu.org/licenses/>.
Copy license text to clipboard
Suggest this license
Make a pull request to suggest this license for a project that is not licensed. Please be polite: see if a license has already been suggested, try to suggest a license fitting for the project’s community, and keep your communication with project maintainers friendly.

Enter GitHub repository URL
How to apply this license
Create a text file (typically named LICENSE or LICENSE.txt) in the root of your source code and copy the text of the license into the file.

Optional steps
The Free Software Foundation recommends taking the additional step of adding a boilerplate notice to the top of each file. The boilerplate can be found at the end of the license.

Add AGPL-3.0-or-later (or AGPL-3.0-only to disallow future versions) to your project’s package description, if applicable (e.g., Node.js, Ruby, and Rust). This will ensure the license is displayed in package directories.

 Source


================================================
FILE: Makefile
================================================
PROTOS_IMAGE ?= trufflesecurity/protos:1.22

.PHONY: check
.PHONY: lint
.PHONY: test
.PHONY: test-race
.PHONY: run
.PHONY: install
.PHONY: protos
.PHONY: protos-windows
.PHONY: vendor
.PHONY: dogfood

dogfood:
	CGO_ENABLED=0 go run . git file://. --json --log-level=2

install:
	CGO_ENABLED=0 go install .

check:
	go fmt $(shell go list ./... | grep -v /vendor/)
	go vet $(shell go list ./... | grep -v /vendor/)

lint:
	golangci-lint run --enable bodyclose --enable copyloopvar --enable misspell --out-format=colored-line-number --timeout 10m

test-failing:
	CGO_ENABLED=0 go test -timeout=5m $(shell go list ./... | grep -v /vendor/) | grep FAIL

test:
	CGO_ENABLED=0 go test -timeout=5m $(shell go list ./... | grep -v /vendor/)

test-integration:
	CGO_ENABLED=0 go test -timeout=5m -tags=integration $(shell go list ./... | grep -v /vendor/)

test-race:
	CGO_ENABLED=1 go test -timeout=5m -race $(shell go list ./... | grep -v /vendor/)

test-detectors:
	CGO_ENABLED=0 go test -tags=detectors -timeout=5m $(shell go list ./... | grep pkg/detectors)

test-community:
	CGO_ENABLED=0 go test -timeout=5m $(shell go list ./... | grep -v /vendor/ | grep -v pkg/sources | grep -v pkg/analyzer/analyzers)

bench:
	CGO_ENABLED=0 go test $(shell go list ./pkg/secrets/... | grep -v /vendor/) -benchmem -run=xxx -bench .

run:
	CGO_ENABLED=0 go run . git file://. --json

run-debug:
	CGO_ENABLED=0 go run . git file://. --json --log-level=2

protos:
	docker run --rm -u "$(shell id -u)" -v "$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))":/pwd "${PROTOS_IMAGE}" bash -c "cd /pwd; /pwd/scripts/gen_proto.sh"

protos-windows:
	docker run --rm -v "$(shell cygpath -w $(shell pwd))":/pwd "${PROTOS_IMAGE}" bash -c "cd /pwd; ./scripts/gen_proto.sh"

release-protos-image:
	docker buildx build --push --platform=linux/amd64,linux/arm64 \
	-t ${PROTOS_IMAGE} -f hack/Dockerfile.protos .

test-release:
	goreleaser release --clean --skip-publish --snapshot


================================================
FILE: PreCommit.md
================================================
# TruffleHog Pre-Commit Hooks

Pre-commit hooks are scripts that run automatically before a commit is completed, allowing you to check your code for issues before sharing it with others. TruffleHog can be integrated as a pre-commit hook to prevent credentials from leaking before they ever leave your computer.

This guide covers how to set up TruffleHog as a pre-commit hook using two popular frameworks:

1. [Git's hooksPath feature](#global-setup-using-gits-hookspath-feature) - A built-in Git feature for managing hooks globally
2. [Using Pre-commit framework](#using-the-pre-commit-framework) - A language-agnostic framework for managing pre-commit hooks
3. [Using Husky](#using-husky) - A Git hooks manager for JavaScript/Node.js projects

## Prerequisites

All of the methods require TruffleHog to be installed.

1. Install TruffleHog:

```bash
# Using Homebrew (macOS)
brew install trufflehog

# Using installation script for Linux, macOS, and Windows (and WSL)
curl -sSfL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh | sh -s -- -b /usr/local/bin
```

## Global setup using Git's hooksPath feature

This approach uses Git's `core.hooksPath` to apply hooks to all repositories without requiring any per-repository setup:

1. Create a global hooks directory:

```bash
mkdir -p ~/.git-hooks
```

2. Create a pre-commit hook file:

```bash
touch ~/.git-hooks/pre-commit
chmod +x ~/.git-hooks/pre-commit
```

3. Configure Git Hook Script

### **Standard Installation**
#### **Option A: Auto-configured (Recommended)**

TruffleHog automatically detects the `TRUFFLEHOG_PRE_COMMIT` environment variable and applies optimal pre-commit settings.

```bash
#!/bin/sh
export TRUFFLEHOG_PRE_COMMIT=1
trufflehog git file://.
```

#### **Option B: Manual-configuration**

Manual configuration (only if you need custom behavior). Do NOT set `TRUFFLEHOG_PRE_COMMIT` if using manual configuration.
```bash
#!bin/sh
trufflehog git file://. --since-commit HEAD --results=verified,unknown --fail --trust-local-git-config
```

### **Docker Installation**

#### **Option A: Auto-configured (Recommended)**
```bash
#!/bin/sh
# Set environment variable inside container (recommended)
docker run --rm \
  -v "$(pwd):/workdir" \
  -e "TRUFFLEHOG_PRE_COMMIT=1" \
  trufflesecurity/trufflehog:latest \
  git file:///workdir
```

#### **Option B: Manual-configuration**
```bash
#!/bin/sh

docker run --rm -v "$(pwd):/workdir" -i --rm trufflesecurity/trufflehog:latest git file:///workdir --since-commit HEAD --results=verified,unknown --fail
```

4. Configure Git to use this hooks directory globally:

```bash
git config --global core.hooksPath ~/.git-hooks
```

Now all your repositories will automatically use this pre-commit hook without any additional setup.

## Using the Pre-commit Framework

The [pre-commit framework](https://pre-commit.com) is a powerful, language-agnostic tool for managing Git hooks.

### Installation of Pre-commit

1. Install the pre-commit framework:

```bash
# Using pip (Python)
pip install pre-commit

# Using Homebrew (macOS)
brew install pre-commit

# Using conda
conda install -c conda-forge pre-commit
```

### Repository-Specific Setup

To set up TruffleHog as a pre-commit hook for a specific repository:

1. Create a `.pre-commit-config.yaml` file in the root of your repository:

TruffleHog automatically detects when running under the pre-commit.com framework and applies optimal settings. No additional configuration is needed.
```yaml
repos:
  - repo: local
    hooks:
      - id: trufflehog
        name: TruffleHog
        description: Detect secrets in your data.
        entry: bash -c 'trufflehog git file://.'
        language: system
        stages: ["pre-commit", "pre-push"]
```

If TruffleHog doesn't auto-detect your pre-commit.com environment, you can manually specify the recommended pre-commit settings:
```yaml
repos:
  - repo: local
    hooks:
      - id: trufflehog
        name: TruffleHog
        description: Detect secrets in your data.
        entry: bash -c 'trufflehog git file://. --since-commit HEAD --results=verified,unknown --fail --trust-local-git-config'
        language: system
        stages: ["pre-commit", "pre-push"]
```

2. Install the pre-commit hook:

```bash
pre-commit install
```

## Using Husky

[Husky](https://typicode.github.io/husky/) is a popular tool for managing Git hooks in JavaScript/Node.js projects.

### Installation of Husky

1. Install Husky in your project:

```bash
# npm
npm install husky --save-dev

# yarn
yarn add husky --dev
```

2. Enable Git hooks:

```bash
# npm
npx husky init
```

### Setting Up TruffleHog with Husky

1. Add the following content to `.husky/pre-commit`:

TruffleHog automatically detects when running under the Husky framework and applies optimal settings. No additional configuration is needed.
```bash
echo "trufflehog git file://." > .husky/pre-commit
```

If TruffleHog doesn't auto-detect your husky framework, you can manually specify the recommended pre-commit settings:
```bash
echo "trufflehog git file://. --since-commit HEAD --results=verified,unknown --fail --trust-local-git-config" > .husky/pre-commit
```

2. For Docker users, use this content instead:

```bash
echo 'docker run --rm -v "$(pwd):/workdir" -i --rm trufflesecurity/trufflehog:latest git file:///workdir' > .husky/pre-commit
```

## Best Practices

### Commit Process

For optimal hook efficacy:

1. Execute `git add` followed by `git commit` separately. This ensures TruffleHog analyzes all intended changes.
2. Avoid using `git commit -am`, as it might bypass pre-commit hook execution for unstaged modifications.

### Skipping Hooks

In rare cases, you may need to bypass pre-commit hooks:

```bash
git commit --no-verify -m "Your commit message"
```

### Running in Audit Mode (Without TRUFFLEHOG_PRE_COMMIT env variable)

You can run the TruffleHog pre-commit hook in an "audit" or "non-enforcement" mode to test the git hook with the following commands:

Local Binary Version:
```bash
trufflehog git file://. --since-commit HEAD --results=verified,unknown 2>/dev/null
```

Docker Container Version:
```bash
docker run --rm -v "$(pwd):/workdir" -i --rm trufflesecurity/trufflehog:latest git file:///workdir --since-commit HEAD --results=verified,unknown 2>/dev/null
```

This change does two things: (1) removes the `--fail` flag, which means the pre-commit hook will *always* pass, (2) suppresses `stderr` output, so only verified secrets are printed to the terminal output.

**For users of the Pre-Commit Framework: add the `verbose: true` flag during audit mode; otherwise, the hook will pass, and you won't see any secrets.**

## Troubleshooting

### Hook Not Running

If your pre-commit hook isn't running:

1. Ensure the hook is executable:

   ```bash
   chmod +x .git/hooks/pre-commit
   ```

2. Check if hooks are enabled:

   ```bash
   git config --get core.hooksPath
   ```

### False Positives

If you're getting false positives:

1. Use the `--results=verified` flag to only show verified secrets
2. Add `trufflehog:ignore` comments on lines with known false positives or risk-accepted findings

## Conclusion

By integrating TruffleHog into your pre-commit workflow, you can prevent credential leaks before they happen. Choose the setup method that best fits your project's needs and development workflow.

For more information on TruffleHog's capabilities, refer to the [main documentation](README.md).


================================================
FILE: README.md
================================================
<p align="center">
  <img alt="GoReleaser Logo" src="https://storage.googleapis.com/trufflehog-static-sources/pixel_pig.png" height="140" />
  <h2 align="center">TruffleHog</h2>
  <p align="center">Find leaked credentials.</p>
</p>

---

<div align="center">

[![Go Report Card](https://goreportcard.com/badge/github.com/trufflesecurity/trufflehog/v3)](https://goreportcard.com/report/github.com/trufflesecurity/trufflehog/v3)
[![License](https://img.shields.io/badge/license-AGPL--3.0-brightgreen)](/LICENSE)
[![Total Detectors](https://img.shields.io/github/directory-file-count/trufflesecurity/truffleHog/pkg/detectors?label=Total%20Detectors&type=dir)](/pkg/detectors)

</div>

---

# :mag_right: _Now Scanning_

<div align="center">

<img src="assets/scanning_logos.svg">

**...and more**

To learn more about TruffleHog and its features and capabilities, visit our [product page](https://trufflesecurity.com/trufflehog?gclid=CjwKCAjwouexBhAuEiwAtW_Zx5IW87JNj97Ci7heFnA5ar6-DuNzT2Y5nIl9DuZ-FOUqx0Qg3vb9nxoClcEQAvD_BwE).

</div>

# :globe_with_meridians: TruffleHog Enterprise

Are you interested in continuously monitoring **Git, Jira, Slack, Confluence, Microsoft Teams, Sharepoint (and more)** for credentials? We have an enterprise product that can help! Learn more at <https://trufflesecurity.com/trufflehog-enterprise>.

We take the revenue from the enterprise product to fund more awesome open source projects that the whole community can benefit from.

</div>

# What is TruffleHog 🐽

TruffleHog is the most powerful secrets **Discovery, Classification, Validation,** and **Analysis** tool. In this context, secret refers to a credential a machine uses to authenticate itself to another machine. This includes API keys, database passwords, private encryption keys, and more.

## Discovery 🔍

TruffleHog can look for secrets in many places including Git, chats, wikis, logs, API testing platforms, object stores, filesystems and more.

## Classification 📁

TruffleHog classifies over 800 secret types, mapping them back to the specific identity they belong to. Is it an AWS secret? Stripe secret? Cloudflare secret? Postgres password? SSL Private key? Sometimes it's hard to tell looking at it, so TruffleHog classifies everything it finds.

## Validation ✅

For every secret TruffleHog can classify, it can also log in to confirm if that secret is live or not. This step is critical to know if there’s an active present danger or not.

## Analysis 🔬

For the 20 some of the most commonly leaked out credential types, instead of sending one request to check if the secret can log in, TruffleHog can send many requests to learn everything there is to know about the secret. Who created it? What resources can it access? What permissions does it have on those resources?

# :loudspeaker: Join Our Community

Have questions? Feedback? Jump into Slack or Discord and hang out with us.

Join our [Slack Community](https://join.slack.com/t/trufflehog-community/shared_invite/zt-pw2qbi43-Aa86hkiimstfdKH9UCpPzQ)

Join the [Secret Scanning Discord](https://discord.gg/8Hzbrnkr7E)

# :tv: Demo

![GitHub scanning demo](https://storage.googleapis.com/truffle-demos/non-interactive.svg)

```bash
docker run --rm -it -v "$PWD:/pwd" trufflesecurity/trufflehog:latest github --org=trufflesecurity
```

# :floppy_disk: Installation

Several options are available for you:

### MacOS users

```bash
brew install trufflehog
```

### Docker:

<sub><i>_Ensure Docker engine is running before executing the following commands:_</i></sub>

#### &nbsp;&nbsp;&nbsp;&nbsp;Unix

```bash
docker run --rm -it -v "$PWD:/pwd" trufflesecurity/trufflehog:latest github --repo https://github.com/trufflesecurity/test_keys
```

#### &nbsp;&nbsp;&nbsp;&nbsp;Windows Command Prompt

```bash
docker run --rm -it -v "%cd:/=\%:/pwd" trufflesecurity/trufflehog:latest github --repo https://github.com/trufflesecurity/test_keys
```

#### &nbsp;&nbsp;&nbsp;&nbsp;Windows PowerShell

```bash
docker run --rm -it -v "${PWD}:/pwd" trufflesecurity/trufflehog github --repo https://github.com/trufflesecurity/test_keys
```

#### &nbsp;&nbsp;&nbsp;&nbsp;M1 and M2 Mac

```bash
docker run --platform linux/arm64 --rm -it -v "$PWD:/pwd" trufflesecurity/trufflehog:latest github --repo https://github.com/trufflesecurity/test_keys
```

### Binary releases

```bash
Download and unpack from https://github.com/trufflesecurity/trufflehog/releases
```

### Compile from source

```bash
git clone https://github.com/trufflesecurity/trufflehog.git
cd trufflehog; go install
```

### Using installation script

```bash
curl -sSfL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh | sh -s -- -b /usr/local/bin
```

### Using installation script, verify checksum signature (requires cosign to be installed)

```bash
curl -sSfL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh | sh -s -- -v -b /usr/local/bin
```

### Using installation script to install a specific version

```bash
curl -sSfL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh | sh -s -- -b /usr/local/bin <ReleaseTag like v3.56.0>
```

# :closed_lock_with_key: Verifying the artifacts

Checksums are applied to all artifacts, and the resulting checksum file is signed using cosign.

You need the following tool to verify signature:

- [Cosign](https://docs.sigstore.dev/cosign/system_config/installation/)

Verification steps are as follows:

1. Download the artifact files you want, and the following files from the [releases](https://github.com/trufflesecurity/trufflehog/releases) page.

   - trufflehog\_{version}\_checksums.txt
   - trufflehog\_{version}\_checksums.txt.pem
   - trufflehog\_{version}\_checksums.txt.sig

2. Verify the signature:

   ```shell
   cosign verify-blob <path to trufflehog_{version}_checksums.txt> \
   --certificate <path to trufflehog_{version}_checksums.txt.pem> \
   --signature <path to trufflehog_{version}_checksums.txt.sig> \
   --certificate-identity-regexp 'https://github\.com/trufflesecurity/trufflehog/\.github/workflows/.+' \
   --certificate-oidc-issuer "https://token.actions.githubusercontent.com"
   ```

3. Once the signature is confirmed as valid, you can proceed to validate that the SHA256 sums align with the downloaded artifact:

   ```shell
   sha256sum --ignore-missing -c trufflehog_{version}_checksums.txt
   ```

Replace `{version}` with the downloaded files version

Alternatively, if you are using the installation script, pass `-v` option to perform signature verification.
This requires Cosign binary to be installed prior to running the installation script.

# :rocket: Quick Start

## 1: Scan a repo for only verified secrets

Command:

```bash
trufflehog git https://github.com/trufflesecurity/test_keys --results=verified
```

Expected output:

```
🐷🔑🐷  TruffleHog. Unearth your secrets. 🐷🔑🐷

Found verified result 🐷🔑
Detector Type: AWS
Decoder Type: PLAIN
Raw result: AKIAYVP4CIPPERUVIFXG
Line: 4
Commit: fbc14303ffbf8fb1c2c1914e8dda7d0121633aca
File: keys
Email: counter <counter@counters-MacBook-Air.local>
Repository: https://github.com/trufflesecurity/test_keys
Timestamp: 2022-06-16 10:17:40 -0700 PDT
...
```

## 2: Scan a GitHub Org for only verified secrets

```bash
trufflehog github --org=trufflesecurity --results=verified
```

## 3: Scan a GitHub Repo for only verified secrets and get JSON output

Command:

```bash
trufflehog git https://github.com/trufflesecurity/test_keys --results=verified --json
```

Expected output:

```
{"SourceMetadata":{"Data":{"Git":{"commit":"fbc14303ffbf8fb1c2c1914e8dda7d0121633aca","file":"keys","email":"counter \u003ccounter@counters-MacBook-Air.local\u003e","repository":"https://github.com/trufflesecurity/test_keys","timestamp":"2022-06-16 10:17:40 -0700 PDT","line":4}}},"SourceID":0,"SourceType":16,"SourceName":"trufflehog - git","DetectorType":2,"DetectorName":"AWS","DecoderName":"PLAIN","Verified":true,"Raw":"AKIAYVP4CIPPERUVIFXG","Redacted":"AKIAYVP4CIPPERUVIFXG","ExtraData":{"account":"595918472158","arn":"arn:aws:iam::595918472158:user/canarytokens.com@@mirux23ppyky6hx3l6vclmhnj","user_id":"AIDAYVP4CIPPJ5M54LRCY"},"StructuredData":null}
...
```

## 4: Scan a GitHub Repo + its Issues and Pull Requests

```bash
trufflehog github --repo=https://github.com/trufflesecurity/test_keys --issue-comments --pr-comments
```

## 5: Scan an S3 bucket for high-confidence results (verified + unknown)

```bash
trufflehog s3 --bucket=<bucket name> --results=verified,unknown
```

## 6: Scan S3 buckets using IAM Roles

```bash
trufflehog s3 --role-arn=<iam role arn>
```

## 7: Scan a Github Repo using SSH authentication in Docker

```bash
docker run --rm -v "$HOME/.ssh:/root/.ssh:ro" trufflesecurity/trufflehog:latest git ssh://github.com/trufflesecurity/test_keys
```

## 8: Scan individual files or directories

```bash
trufflehog filesystem path/to/file1.txt path/to/file2.txt path/to/dir
```

## 9: Scan a local git repo

Clone the git repo. For example [test keys](git@github.com:trufflesecurity/test_keys.git) repo.
```bash
git clone git@github.com:trufflesecurity/test_keys.git
```

Run trufflehog from the parent directory (outside the git repo).
```bash
trufflehog git file://test_keys --results=verified,unknown
```

To guard against malicious git configs in local scanning (see CVE-2025-41390), TruffleHog clones local git repositories to a temporary directory prior to scanning. This follows [Git's security best practices](https://git-scm.com/docs/git#_security). If you want to specify a custom path to clone the repository to (instead of tmp), you can use the `--clone-path` flag. If you'd like to skip the local cloning process and scan the repository directly (only do this for trusted repos), you can use the `--trust-local-git-config` flag.

## 10: Scan GCS buckets for only verified secrets

```bash
trufflehog gcs --project-id=<project-ID> --cloud-environment --results=verified
```

## 11: Scan a Docker image for only verified secrets

Use the `--image` flag multiple times to scan multiple images.

```bash
# to scan from a remote registry
trufflehog docker --image trufflesecurity/secrets --results=verified

# to scan from the local docker daemon
trufflehog docker --image docker://new_image:tag --results=verified

# to scan from an image saved as a tarball
trufflehog docker --image file://path_to_image.tar --results=verified
```

## 12: Scan in CI

Set the `--since-commit` flag to your default branch that people merge into (ex: "main"). Set the `--branch` flag to your PR's branch name (ex: "feature-1"). Depending on the CI/CD platform you use, this value can be pulled in dynamically (ex: [CIRCLE_BRANCH in Circle CI](https://circleci.com/docs/variables/) and [TRAVIS_PULL_REQUEST_BRANCH in Travis CI](https://docs.travis-ci.com/user/environment-variables/)). If the repo is cloned and the target branch is already checked out during the CI/CD workflow, then `--branch HEAD` should be sufficient. The `--fail` flag will return an 183 error code if valid credentials are found.

```bash
trufflehog git file://. --since-commit main --branch feature-1 --results=verified,unknown --fail
```

## 13: Scan a Postman workspace

Use the `--workspace-id`, `--collection-id`, `--environment` flags multiple times to scan multiple targets.

```bash
trufflehog postman --token=<postman api token> --workspace-id=<workspace id>
```

## 14: Scan a Jenkins server

```bash
trufflehog jenkins --url https://jenkins.example.com --username admin --password admin
```

## 15: Scan an Elasticsearch server

### Scan a Local Cluster

There are two ways to authenticate to a local cluster with TruffleHog: (1) username and password, (2) service token.

#### Connect to a local cluster with username and password

```bash
trufflehog elasticsearch --nodes 192.168.14.3 192.168.14.4 --username truffle --password hog
```

#### Connect to a local cluster with a service token

```bash
trufflehog elasticsearch --nodes 192.168.14.3 192.168.14.4 --service-token ‘AAEWVaWM...Rva2VuaSDZ’
```

### Scan an Elastic Cloud Cluster

To scan a cluster on Elastic Cloud, you’ll need a Cloud ID and API key.

```bash
trufflehog elasticsearch \
  --cloud-id 'search-prod:dXMtY2Vx...YjM1ODNlOWFiZGRlNjI0NA==' \
  --api-key 'MlVtVjBZ...ZSYlduYnF1djh3NG5FQQ=='
```

## 16. Scan a GitHub Repository for Cross Fork Object References and Deleted Commits

The following command will enumerate deleted and hidden commits on a GitHub repository and then scan them for secrets. This is an alpha release feature.

```bash
trufflehog github-experimental --repo https://github.com/<USER>/<REPO>.git --object-discovery
```

In addition to the normal TruffleHog output, the `--object-discovery` flag creates two files in a new `$HOME/.trufflehog` directory: `valid_hidden.txt` and `invalid.txt`. These are used to track state during commit enumeration, as well as to provide users with a complete list of all hidden and deleted commits (`valid_hidden.txt`). If you'd like to automatically remove these files after scanning, please add the flag `--delete-cached-data`.

**Note**: Enumerating all valid commits on a repository using this method takes between 20 minutes and a few hours, depending on the size of your repository. We added a progress bar to keep you updated on how long the enumeration will take. The actual secret scanning runs extremely fast.

For more information on Cross Fork Object References, please [read our blog post](https://trufflesecurity.com/blog/anyone-can-access-deleted-and-private-repo-data-github).

## 17. Scan Hugging Face

### Scan a Hugging Face Model, Dataset or Space

```bash
trufflehog huggingface --model <model_id> --space <space_id> --dataset <dataset_id>
```

### Scan all Models, Datasets and Spaces belonging to a Hugging Face Organization or User

```bash
trufflehog huggingface --org <orgname> --user <username>
```

(Optionally) When scanning an organization or user, you can skip an entire class of resources with `--skip-models`, `--skip-datasets`, `--skip-spaces` OR a particular resource with `--ignore-models <model_id>`, `--ignore-datasets <dataset_id>`, `--ignore-spaces <space_id>`.

### Scan Discussion and PR Comments

```bash
trufflehog huggingface --model <model_id> --include-discussions --include-prs
```

## 18. Scan stdin Input

```bash
aws s3 cp s3://example/gzipped/data.gz - | gunzip -c | trufflehog stdin
```

# :question: FAQ

- All I see is `🐷🔑🐷  TruffleHog. Unearth your secrets. 🐷🔑🐷` and the program exits, what gives?
  - That means no secrets were detected
- Why is the scan taking a long time when I scan a GitHub org
  - Unauthenticated GitHub scans have rate limits. To improve your rate limits, include the `--token` flag with a personal access token
- It says a private key was verified, what does that mean?
  - A verified result means TruffleHog confirmed the credential is valid by testing it against the service's API. For private keys, we've confirmed the key can be used live for SSH or SSL authentication. Check out our Driftwood blog post to learn more [Blog post](https://trufflesecurity.com/blog/driftwood-know-if-private-keys-are-sensitive/)
- Is there an easy way to ignore specific secrets?
  - If the scanned source [supports line numbers](https://github.com/trufflesecurity/trufflehog/blob/d6375ba92172fd830abb4247cca15e3176448c5d/pkg/engine/engine.go#L358-L365), then you can add a `trufflehog:ignore` comment on the line containing the secret to ignore that secrets.

# :newspaper: What's new in v3?

TruffleHog v3 is a complete rewrite in Go with many new powerful features.

- We've **added over 700 credential detectors that support active verification against their respective APIs**.
- We've also added native **support for scanning GitHub, GitLab, Docker, filesystems, S3, GCS, Circle CI and Travis CI**.
- **Instantly verify private keys** against millions of github users and **billions** of TLS certificates using our [Driftwood](https://trufflesecurity.com/blog/driftwood) technology.
- Scan binaries, documents, and other file formats
- Available as a GitHub Action and a pre-commit hook

## What is credential verification?

For every potential credential that is detected, we've painstakingly implemented programmatic verification against the API that we think it belongs to. Verification eliminates false positives and provides three result statuses:

- **verified**: Credential confirmed as valid and active by API testing
- **unverified**: Credential detected but not confirmed valid (may be invalid, expired, or verification disabled)  
- **unknown**: Verification attempted but failed due to errors, such as a network or API failure

For example, the [AWS credential detector](pkg/detectors/aws/aws.go) performs a `GetCallerIdentity` API call against the AWS API to verify if an AWS credential is active.

# :memo: Usage

TruffleHog has a sub-command for each source of data that you may want to scan:

- git
- github
- gitlab
- docker
- s3
- filesystem (files and directories)
- syslog
- circleci
- travisci
- gcs (Google Cloud Storage)
- postman
- jenkins
- elasticsearch
- stdin
- multi-scan

Each subcommand can have options that you can see with the `--help` flag provided to the sub command:

```
$ trufflehog git --help
usage: TruffleHog [<flags>] <command> [<args> ...]

TruffleHog is a tool for finding credentials.


Flags:
  -h, --[no-]help                Show context-sensitive help (also try --help-long and --help-man).
      --log-level=0              Logging verbosity on a scale of 0 (info) to 5 (trace). Can be
                                 disabled with "-1".
      --[no-]profile             Enables profiling and sets a pprof and fgprof server on :18066.
  -j, --[no-]json                Output in JSON format.
      --[no-]json-legacy         Use the pre-v3.0 JSON format. Only works with git, gitlab,
                                 and github sources.
      --[no-]github-actions      Output in GitHub Actions format.
      --concurrency=12           Number of concurrent workers.
      --[no-]no-verification     Don't verify the results.
      --results=RESULTS          Specifies which type(s) of results to output: verified (confirmed
                                 valid by API), unknown (verification failed due to error),
                                 unverified (detected but not verified), filtered_unverified
                                 (unverified but would have been filtered out). Defaults to
                                 verified,unverified,unknown.
      --[no-]no-color            Disable colorized output
      --[no-]allow-verification-overlap
                                 Allow verification of similar credentials across detectors
      --[no-]filter-unverified   Only output first unverified result per chunk per detector if there
                                 are more than one results.
      --filter-entropy=FILTER-ENTROPY
                                 Filter unverified results with Shannon entropy. Start with 3.0.
      --config=CONFIG            Path to configuration file.
      --[no-]print-avg-detector-time
                                 Print the average time spent on each detector.
      --[no-]no-update           Don't check for updates.
      --[no-]fail                Exit with code 183 if results are found.
      --[no-]fail-on-scan-errors
                                 Exit with non-zero error code if an error occurs during the scan.
      --verifier=VERIFIER ...    Set custom verification endpoints.
      --[no-]custom-verifiers-only
                                 Only use custom verification endpoints.
      --detector-timeout=DETECTOR-TIMEOUT
                                 Maximum time to spend scanning chunks per detector (e.g., 30s).
      --archive-max-size=ARCHIVE-MAX-SIZE
                                 Maximum size of archive to scan. (Byte units eg. 512B, 2KB, 4MB)
      --archive-max-depth=ARCHIVE-MAX-DEPTH
                                 Maximum depth of archive to scan.
      --archive-timeout=ARCHIVE-TIMEOUT
                                 Maximum time to spend extracting an archive.
      --include-detectors="all"  Comma separated list of detector types to include. Protobuf name or
                                 IDs may be used, as well as ranges.
      --exclude-detectors=EXCLUDE-DETECTORS
                                 Comma separated list of detector types to exclude. Protobuf name
                                 or IDs may be used, as well as ranges. IDs defined here take
                                 precedence over the include list.
      --[no-]no-verification-cache
                                 Disable verification caching
      --[no-]force-skip-binaries
                                 Force skipping binaries.
      --[no-]force-skip-archives
                                 Force skipping archives.
      --[no-]skip-additional-refs
                                 Skip additional references.
      --user-agent-suffix=USER-AGENT-SUFFIX
                                 Suffix to add to User-Agent.
      --[no-]version             Show application version.

Commands:
help [<command>...]
    Show help.

git [<flags>] <uri>

    Find credentials in git repositories.

github [<flags>]
    Find credentials in GitHub repositories.

github-experimental --repo=REPO [<flags>]
    Run an experimental GitHub scan. Must specify at least one experimental sub-module to run:
    object-discovery.

gitlab --token=TOKEN [<flags>]
    Find credentials in GitLab repositories.

filesystem [<flags>] [<path>...]
    Find credentials in a filesystem.

s3 [<flags>]
    Find credentials in S3 buckets.

gcs [<flags>]
    Find credentials in GCS buckets.

syslog --format=FORMAT [<flags>]
    Scan syslog

circleci --token=TOKEN
    Scan CircleCI

docker [<flags>]
    Scan Docker Image


travisci --token=TOKEN
    Scan TravisCI

postman [<flags>]
    Scan Postman

elasticsearch [<flags>]
    Scan Elasticsearch

jenkins --url=URL [<flags>]
    Scan Jenkins

huggingface [<flags>]
    Find credentials in HuggingFace datasets, models and spaces.

stdin
    Find credentials from stdin.

multi-scan
    Find credentials in multiple sources defined in configuration.

json-enumerator [<path>...]
    Find credentials from a JSON enumerator input.

analyze
    Analyze API keys for fine-grained permissions information.
```

For example, to scan a `git` repository, start with

```
trufflehog git https://github.com/trufflesecurity/trufflehog.git
```

## Configuration

TruffleHog supports defining [custom regex detectors](#custom-regex-detector-alpha)
and multiple sources in a configuration file provided via the `--config` flag.
The regex detectors can be used with any subcommand, while the sources defined
in configuration are only for the `multi-scan` subcommand.

The configuration format for sources can be found on Truffle Security's
[source configuration documentation page](https://docs.trufflesecurity.com/scan-data-for-secrets).

Example GitHub source configuration and [options reference](https://docs.trufflesecurity.com/github#Fvm1I):

```yaml
sources:
- connection:
    '@type': type.googleapis.com/sources.GitHub
    repositories:
    - https://github.com/trufflesecurity/test_keys.git
    unauthenticated: {}
  name: example config scan
  type: SOURCE_TYPE_GITHUB
  verify: true
```

You may define multiple connections under the `sources` key (see above), and
TruffleHog will scan all of the sources concurrently.

## S3

The S3 source supports assuming IAM roles for scanning in addition to IAM users. This makes it easier for users to scan multiple AWS accounts without needing to rely on hardcoded credentials for each account.

The IAM identity that TruffleHog uses initially will need to have `AssumeRole` privileges as a principal in the [trust policy](https://aws.amazon.com/blogs/security/how-to-use-trust-policies-with-iam-roles/) of each IAM role to assume.

To scan a specific bucket using locally set credentials or instance metadata if on an EC2 instance:

```bash
trufflehog s3 --bucket=<bucket-name>
```

To scan a specific bucket using an assumed role:

```bash
trufflehog s3 --bucket=<bucket-name> --role-arn=<iam-role-arn>
```

Multiple roles can be passed as separate arguments. The following command will attempt to scan every bucket each role has permissions to list in the S3 API:

```bash
trufflehog s3 --role-arn=<iam-role-arn-1> --role-arn=<iam-role-arn-2>
```

Exit Codes:

- 0: No errors and no results were found.
- 1: An error was encountered. Sources may not have completed scans.
- 183: No errors were encountered, but results were found. Will only be returned if `--fail` flag is used.

## :octocat: TruffleHog Github Action

### General Usage

```
on:
  push:
    branches:
      - main
  pull_request:

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v4
      with:
        fetch-depth: 0
    - name: Secret Scanning
      uses: trufflesecurity/trufflehog@main
      with:
        extra_args: --results=verified,unknown
```

In the example config above, we're scanning for live secrets in all PRs and Pushes to `main`. Only code changes in the referenced commits are scanned. If you'd like to scan an entire branch, please see the "Advanced Usage" section below.

### Shallow Cloning

If you're incorporating TruffleHog into a standalone workflow and aren't running any other CI/CD tooling alongside TruffleHog, then we recommend using [Shallow Cloning](https://git-scm.com/docs/git-clone#Documentation/git-clone.txt---depthltdepthgt) to speed up your workflow. Here's an example of how to do it:

```
...
      - shell: bash
        run: |
          if [ "${{ github.event_name }}" == "push" ]; then
            echo "depth=$(($(jq length <<< '${{ toJson(github.event.commits) }}') + 2))" >> $GITHUB_ENV
            echo "branch=${{ github.ref_name }}" >> $GITHUB_ENV
          fi
          if [ "${{ github.event_name }}" == "pull_request" ]; then
            echo "depth=$((${{ github.event.pull_request.commits }}+2))" >> $GITHUB_ENV
            echo "branch=${{ github.event.pull_request.head.ref }}" >> $GITHUB_ENV
          fi
      - uses: actions/checkout@v3
        with:
          ref: ${{env.branch}}
          fetch-depth: ${{env.depth}}
      - uses: trufflesecurity/trufflehog@main
        with:
          extra_args: --results=verified,unknown
...
```

Depending on the event type (push or PR), we calculate the number of commits present. Then we add 2, so that we can reference a base commit before our code changes. We pass that integer value to the `fetch-depth` flag in the checkout action in addition to the relevant branch. Now our checkout process should be much shorter.

### Canary detection

TruffleHog statically detects [https://canarytokens.org/](https://canarytokens.org/).

![image](https://github.com/trufflesecurity/trufflehog/assets/52866392/74ace530-08c5-4eaf-a169-84a73e328f6f)

### Advanced Usage

```yaml
- name: TruffleHog
  uses: trufflesecurity/trufflehog@main
  with:
    # Repository path
    path:
    # Start scanning from here (usually main branch).
    base:
    # Scan commits until here (usually dev branch).
    head: # optional
    # Extra args to be passed to the trufflehog cli.
    extra_args: --log-level=2 --results=verified,unknown
```

If you'd like to specify specific `base` and `head` refs, you can use the `base` argument (`--since-commit` flag in TruffleHog CLI) and the `head` argument (`--branch` flag in the TruffleHog CLI). We only recommend using these arguments for very specific use cases, where the default behavior does not work.

#### Advanced Usage: Scan entire branch

```
- name: scan-push
        uses: trufflesecurity/trufflehog@main
        with:
          base: ""
          head: ${{ github.ref_name }}
          extra_args: --results=verified,unknown
```

## TruffleHog GitLab CI

### Example Usage

```yaml
stages:
  - security

security-secrets:
  stage: security
  allow_failure: false
  image: alpine:latest
  variables:
    SCAN_PATH: "." # Set the relative path in the repo to scan
  before_script:
    - apk add --no-cache git curl jq
    - curl -sSfL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh | sh -s -- -b /usr/local/bin
  script:
    - trufflehog filesystem "$SCAN_PATH" --results=verified,unknown --fail --json | jq
  rules:
    - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
```

In the example pipeline above, we're scanning for live secrets in all repository directories and files. This job runs only when the pipeline source is a merge request event, meaning it's triggered when a new merge request is created.

## Pre-commit Hook

TruffleHog can be used in a pre-commit hook to prevent credentials from leaking before they ever leave your computer.

See the [pre-commit hook documentation](PreCommit.md) for more information.

## Custom Regex Detector (alpha)

TruffleHog supports detection and verification of custom regular expressions.
For detection, at least one **regular expression** and **keyword** is required.
A **keyword** is a fixed literal string identifier that appears in or around
the regex to be detected. To allow maximum flexibility for verification, a
webhook is used containing the regular expression matches.

TruffleHog will send a JSON POST request containing the regex matches to a
configured webhook endpoint. If the endpoint responds with a `200 OK` response
status code, the secret is considered verified. If verification fails due to network/API errors, the result is marked as unknown.

Custom Detectors support a few different filtering mechanisms: entropy, regex targeting the entire match, regex targeting the captured secret,
and excluded word lists checked against the secret (captured group if present, entire match if capture group is not present). Note that if
your custom detector has multiple `regex` set (in this example `hogID`, and `hogToken`), then the filters get applied to each regex. [Here](examples/generic_with_filters.yml) is an example of a custom detector using these filters.

**NB:** This feature is alpha and subject to change.

### Regex Detector Example
[Here](/pkg/custom_detectors/CUSTOM_DETECTORS.md) is how to setup a custom regex detector with verification server.

## Generic JWT Detection

TruffleHog supports detection and verification of a subset of generic JWTs it finds.
Specifically, if a JWT uses public-key cryptography rather than HMAC and the public key can be obtained, TruffleHog can determine whether the JWT is live or not.

## :mag: Analyze

TruffleHog supports running a deeper analysis of a credential to view its permissions and the resources it has access to.

```bash
trufflehog analyze
```

# :heart: Contributors

This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].

<a href="https://github.com/trufflesecurity/trufflehog/graphs/contributors">
  <img src="https://contrib.rocks/image?repo=trufflesecurity/trufflehog" />
</a>

# :computer: Contributing

Contributions are very welcome! Please see our [contribution guidelines first](CONTRIBUTING.md).

We no longer accept contributions to TruffleHog v2, but that code is available in the `v2` branch.

## Adding new secret detectors

We have published some [documentation and tooling to get started on adding new secret detectors](hack/docs/Adding_Detectors_external.md). Let's improve detection together!

# Use as a library

Currently, trufflehog is in heavy development and no guarantees can be made on
the stability of the public APIs at this time.

# License Change

Since v3.0, TruffleHog is released under a AGPL 3 license, included in [`LICENSE`](LICENSE). TruffleHog v3.0 uses none of the previous codebase, but care was taken to preserve backwards compatibility on the command line interface. The work previous to this release is still available licensed under GPL 2.0 in the history of this repository and the previous package releases and tags. A completed CLA is required for us to accept contributions going forward.


================================================
FILE: SECURITY.md
================================================
Please report security issues to security@trufflesec.com and include `trufflehog` in the subject line. If your vulnerability involves SSRF or outbound requests, please see our policy for that specific class of vulnerability below.

## Blind SSRF & Outbound Request Policy
Truffle Security treats blind SSRF (the ability to induce outbound requests without data retrieval) as a hardening opportunity rather than a vulnerability. We do not issue CVEs or formal advisories for reports showing outbound interactions unless they demonstrate a tangible security risk to users.

#### Policy Criteria
**Vulnerability (CVE Issued):** We will issue a CVE if a researcher demonstrates a clear exploit chain. For example:
- Credential Exfiltration: Forcing TruffleHog to send third-party secrets (discovered during a scan) or the host's own environment credentials (e.g., IAM metadata) to an attacker-controlled endpoint.
- Internal Exploitation: Using a blind request to trigger secondary vulnerabilities (e.g. RCE) on restricted internal services configured for defense-in-depth.

**Hardening (No CVE):** We generally will not issue a CVE for:
- Reflected Payloads: Inducing a request to an attacker-controlled URL that was already present in the scanned source code (i.e., the attacker receiving their own data back).
- Basic Outbound Control: Demonstrating control over the request URL, Path, or Body, without demonstrating a path to credential leakage or internal system exploitation.
- Service Probing: Simple open/closed port verification or basic interaction with internal services (e.g., triggering a GET request to a local web server) without a demonstrated compromise of data or system integrity.
- Secondary Vulnerability Dependencies: Where the impact relies entirely on the pre-existing lack of authentication, misconfiguration, or known vulnerabilities of a third-party internal service.

### Submission Guidelines
To help us evaluate your report, please specify:
- Level of Control: Which request components are controllable (Method, Host, Path, Headers, or Body)?
- Secret Context: Can you prove that a legitimate secret (not the attacker's payload) is attached to or contained within the outbound request?
- Target Reach: Can the request reach restricted internal IPs (e.g., 127.0.0.1 or 169.254.169.254)?
- Demonstrated Impact: What is the specific risk to a user or environment beyond a simple DNS/HTTP interaction?


================================================
FILE: action.yml
================================================
name: 'TruffleHog OSS'
description: 'Find and verify leaked credentials in your source code.'
author: Truffle Security Co. <support@trufflesec.com>

inputs:
  path:
    description: Repository path
    required: false
    default: "./"
  base:
    description: Start scanning from here (usually main branch).
    required: false
    default: ""
  head:
    description: Scan commits until here (usually dev branch).
    required: false
  extra_args:
    default: ""
    description: Extra args to be passed to the trufflehog cli.
    required: false
  version:
    default: "latest"
    description: Scan with this trufflehog cli version.
    required: false
branding:
  icon: "shield"
  color: "green"

runs:
  using: "composite"
  steps:
    - shell: bash
      working-directory: ${{ inputs.path }}
      env:
        BASE: ${{ inputs.base }}
        HEAD: ${{ inputs.head }}
        ARGS: ${{ inputs.extra_args }}
        COMMIT_IDS: ${{ toJson(github.event.commits.*.id) }}
        VERSION: ${{ inputs.version }}
      run: |
        ##########################################
        ## ADVANCED USAGE                       ##
        ## Scan by BASE & HEAD user inputs      ##
        ## If BASE == HEAD, exit with error     ##
        ##########################################
        # Check if jq is installed, if not, install it
        if ! command -v jq &> /dev/null
        then
          echo "jq could not be found, installing..."
          apt-get -y update && apt-get install -y jq
        fi

        git status >/dev/null  # make sure we are in a git repository
        if [ -n "$BASE" ] || [ -n "$HEAD" ]; then
          if [ -n "$BASE" ]; then
            base_commit=$(git rev-parse "$BASE" 2>/dev/null) || true
          else
            base_commit=""
          fi
          if [ -n "$HEAD" ]; then
            head_commit=$(git rev-parse "$HEAD" 2>/dev/null) || true
          else
            head_commit=""
          fi
          if [ "$base_commit" == "$head_commit" ] ; then
            echo "::error::BASE and HEAD commits are the same. TruffleHog won't scan anything. Please see documentation (https://github.com/trufflesecurity/trufflehog#octocat-trufflehog-github-action)."
            exit 1
          fi
        ##########################################
        ## Scan commits based on event type     ##
        ##########################################
        else
          if [ "${{ github.event_name }}" == "push" ]; then
            COMMIT_LENGTH=$(printenv COMMIT_IDS | jq length)
            if [ $COMMIT_LENGTH == "0" ]; then
              echo "No commits to scan"
              exit 0
            fi
            HEAD=${{ github.event.after }}
            if [ ${{ github.event.before }} == "0000000000000000000000000000000000000000" ]; then
              BASE=""
            else
              BASE=${{ github.event.before }}
            fi
          elif [ "${{ github.event_name }}" == "workflow_dispatch" ] || [ "${{ github.event_name }}" == "schedule" ]; then
            BASE=""
            HEAD=""
          elif [ "${{ github.event_name }}" == "pull_request" ]; then
            BASE=${{github.event.pull_request.base.sha}}
            HEAD=${{github.event.pull_request.head.sha}}
          fi
        fi
        ##########################################
        ##          Run TruffleHog              ##
        ##########################################
        docker run --rm -v .:/tmp -w /tmp \
        ghcr.io/trufflesecurity/trufflehog:${VERSION} \
        git file:///tmp/ \
        --since-commit \
        ${BASE:-''} \
        --branch \
        ${HEAD:-''} \
        --fail \
        --no-update \
        --github-actions \
        ${ARGS:-''}


================================================
FILE: docs/concurrency.md
================================================


## Concurrency

```mermaid
sequenceDiagram
    %% Setup the workers
    participant Main
    Note over Main: e.startWorkers()<br />kicks off some number<br />of threads per worker type
    create participant ScannerWorkers
    Main->>ScannerWorkers: e.startScannerWorkers()
    Note over ScannerWorkers: ScannerWorkers are primarily<br />responsible for enumerating<br />and chunking a source
    create participant VerificationOverlapWorkers
    Main->>VerificationOverlapWorkers: e.startVerificationOverlapWorkers()
    Note over VerificationOverlapWorkers: VerificationOverlapWorkers<br />handles chunks<br />matched to multiple<br />detectors
    create participant DetectorWorkers
    Main->>DetectorWorkers: e.startDetectorWorkers()
    Note over DetectorWorkers: DetectorWorkers are primarily<br />responsible for running<br />detectors on chunks
    create participant NotifierWorkers
    Main->>NotifierWorkers: e.startNotifierWorkers()
    Note over NotifierWorkers: Primarily responsible for reporting<br />results (typically to the cmd line)
    
    %% Set up the parallelism
    par
        Note over Main,ScannerWorkers: Depending on the type of<br />scan requested, calls one of<br />engine.(ScanGit|ScanGitHub|ScanFileSystem|etc)
        Main->>ScannerWorkers:  e.ChunksChan()<br /><- chunk
    and 
        Note over ScannerWorkers: Decode chunks and find matching detectors
        ScannerWorkers->>DetectorWorkers: e.detectableChunksChan<br /><- detectableChunk
        Note over ScannerWorkers: When multiple detectors match on the<br />same chunk we have to decided _which_<br />detector will verify found secrets
        ScannerWorkers->>VerificationOverlapWorkers: e.verificationOverlapChunksChan<br /><- verificationOverlapChunk
    and
        Note over VerificationOverlapWorkers: Decide which detectors to run on that chunk
        VerificationOverlapWorkers->>DetectorWorkers:  e.detectableChunksChan<br /><- detectableChunk
    and
        Note over DetectorWorkers: Run detection (finding secrets),<br />optionally verify them<br />do filtering and enrichment
        DetectorWorkers->>NotifierWorkers: e.ResultsChan()|e.results<br /><-detectors.ResultWithMetadata
    and
        Note over NotifierWorkers: Write results to output
    end
        
    
```

================================================
FILE: docs/iterative_decoding_performance.md
================================================
# Iterative Decoding Performance

Performance characteristics of the `--max-decode-depth` feature, which enables
chained decoding (e.g., base64 inside UTF-16, double-encoded base64).

## How it works

At depth 0, all decoders run on the original chunk (identical to pre-existing
behavior). When a decoder produces new output, that output is fed back through
all decoders at the next depth level. The loop exits early when no decoder
produces new data, so unused depth levels are effectively free.

The PLAIN (UTF-8) decoder is skipped at depth > 0 since it's a passthrough
that never transforms data produced by other decoders (their output is already
valid UTF-8/ASCII).

## Filesystem scan benchmark

Scanned the trufflehog repository (~4,500 files) with `--no-verification`
and `--concurrency=1` for deterministic comparison.

| Depth | Wall time | Unique results | Delta vs depth=1 |
|-------|-----------|----------------|-------------------|
| 1     | 8.05s     | 924            | —                 |
| 2     | 8.18s     | 927            | +3, +1.6%         |
| 3     | 8.09s     | 928            | +4, +0.5%         |
| 5     | 8.19s     | 928            | +4, +1.7%         |
| 10    | 8.35s     | 932            | +8, +3.7%         |

Results converge by depth 3. Depths 4–5 produce no additional decoded data in
this corpus, so they add only a single `len() == 0` check per chunk per extra
depth level.

The small unique-result variance at depth 10 is from pre-existing
nondeterminism in the concurrent detector workers' dedup ordering, not from the
decoding itself.

## Per-decoder microbenchmarks

Individual decoder cost is unchanged by this feature (decoders are not
modified). For reference, base64 decoder latency on random data:

| Input size | Latency/op | Allocs    |
|------------|------------|-----------|
| 100 B      | ~250 ns    | 96 B / 2  |
| 1 KB       | ~2.25 µs   | 96 B / 2  |
| 10 KB      | ~44 ns     | 96 B / 2  |

The 10 KB case is fast because random bytes rarely form valid base64 substrings
(the 20-character minimum threshold is never met), so the decoder exits after a
single O(n) character scan.

## Memory overhead

Each depth level that produces new decoded data stores one copy of the output
(typically smaller than the input, since base64 decoding shrinks by ~25%).
A `seen` list (slice of byte slices) prevents reprocessing identical data.
At depth 5 on a typical chunk, this list has 0–3 entries. No hashing or maps
are used.

## Choosing a depth

| Depth | Use case |
|-------|----------|
| 1     | Legacy behavior, no chaining |
| 2     | Covers base64-in-base64, base64-in-UTF-16, base64-in-escaped-unicode |
| 5     | Default. Handles deeply nested configs with no measurable cost over depth 2 |


================================================
FILE: docs/process_flow.md
================================================
# TruffleHog Process Flows

## Scans

## Data Flow

```mermaid
flowchart LR
    SourceDecomposition["`**Source Decomposition**

Breaking up the locations that we are looking _for_ secrets into small chunks`"]

    DetectorMatching{Chunk<br/>to<br/>Detector<br/>Matching}
    
    SecretDetection["`**Secret Detection**

Finding secrets in these chunks and (optionally) verifying whether they are live`"]

    ResultNotification["`**Result Notification**

Enriching results with metadata and (usually) printing to console`"]
    
    SourceDecomposition -- chunks --> DetectorMatching
    DetectorMatching -- matched chunks --> SecretDetection
    SecretDetection -- results --> ResultNotification
```

#### Source Decomposition

```mermaid
flowchart TD
    subgraph Source
        direction TB
        SourceDescription("`**(1)** Sources are top level places we find data/files/text to _scan_`")
        GitSource["git Source"]
        GitHubSource["GitHub Source"]
        FilesystemSource["File System Source"]
        PostmanSource["Postman Source"]
    end

    subgraph Unit
        direction TB
        UnitDescription("`**(2)** Units are natural subdivisions of Sources, but still quite large`")
        FilesystemUnit[Directory]
        GitUnit[Git Repository]
    end

    subgraph Chunk
        direction TB
        ChunkDescription("`**(3)** Chunks are the smallest units that we decompose our chunks into, and are subsequent passed on to detection`")
        FilesystemChunk[file contents]
        GitRepositoryChunk["`git log diff hunks`"]
        PostmanChunk[data chunk]
    end


    SourceDescription -- decomposed into --> UnitDescription
    UnitDescription -- further decomposed into --> ChunkDescription


    GitSource -- cloned locally<br />if not already local --> GitUnit
    GitHubSource -- cloned locally --> GitUnit
    PostmanSource -- Most sources\ndon't use units --> PostmanChunk
    FilesystemSource --> FilesystemUnit

    GitUnit -- git log -p --> GitRepositoryChunk
    FilesystemUnit --> FilesystemChunk

    style SourceDescription fill:#89553e
    style UnitDescription fill:#89553e
    style ChunkDescription fill:#89553e
```

#### Chunk to Detector Matching

```mermaid
flowchart LR


    KeywordMatching["`**Keyword Matching**
_(Aho-Corasick)_

Match chunks to detectors based on the presence of specific keywords in the chunk`"]
    
    chunks --> KeywordMatching --> detectors
```

#### Secret Detection

```mermaid
flowchart LR

subgraph Detector
    direction RL
    subgraph DetectorDescription["  "]
        DetectorDescriptionText["`Detectors are the bits that actually check for the existence of a secret in a chunk, and (optionally) verify it`"]
        ExampleDetectors["`Example Detectors:
                    * AWS
                    * Azure
                    * Twilio`"]
    end
    
    subgraph DetectorResponsibility[" "]
        direction LR

        De-Dupe-Detectors["`**De-Dupe-Detectors**

If multiple detectors keyword-match on the same chunk, we have some logic that chooses which detector will verify found secret (so we don't duplicate verification requests to external APIs)`"]

        CollectMatches["`**Collect Matches**

Detector specific regexes are run against the matched chunks, resulting in unverified secrets`"]
        VerifyMatches["`**Verify Matches**

Optionally, observed unverified secrets are verified by attempting to use them against live services`"]
        
        De-Dupe-Detectors -- deduped detectors --> CollectMatches
        CollectMatches -- regex matched chunks --> VerifyMatches
    end
    
    style DetectorDescription fill:#89553e
    style DetectorDescriptionText fill:#89553e
end
```

#### Result Notification

```mermaid
flowchart LR

    Dispatcher["`**Dispatcher**

Results, verified or otherwise, are sent to a dispatcher to be sent to whichever place we're updating about the 
results -- usually the command line.`"]
    
    results --> Dispatcher --> output
```



================================================
FILE: entrypoint.sh
================================================
#!/usr/bin/env bash

# Parse the last argument into an array of extra_args.
mapfile -t extra_args < <(bash -c "for arg in ${*: -1}; do echo \$arg; done")

# Directories might be owned by a user other than root
git config --global --add safe.directory '*'

if [[ $# -eq 0 ]]; then
  /usr/bin/trufflehog --help
else
  /usr/bin/trufflehog "${@: 1: $#-1}" "${extra_args[@]}"
fi


================================================
FILE: examples/README.md
================================================
# Examples
This folder contains various examples like custom detectors, scripts, etc. Feel free to contribute!

### Generic Detector
An often requested feature for TruffleHog is a generic detector. By default, we do not support generic detection as it would result in lots of false positives. However, if you want to attempt detect generic secrets you can use a custom detector. 

#### Try it out:
```
wget https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/examples/generic.yml
trufflehog filesystem --config=$PWD/generic.yml $PWD

# to filter so that _only_ generic credentials are logged:
trufflehog filesystem --config=$PWD/generic.yml --json --no-verification $PWD | awk '/generic-api-key/{print $0}'
```


================================================
FILE: examples/generic.yml
================================================
detectors:
- name: generic-api-key
  keywords:
  - key
  - api
  - token
  - secret
  - client
  - passwd
  - password
  - auth
  - access
  regex:
    # borrowing the gitleaks generic-api-key regex
    generic-api-key: "(?i)(?:key|api|token|secret|client|passwd|password|auth|access)(?:[0-9a-z\\-_\\t .]{0,20})(?:[\\s|']|[\\s|\"]){0,3}(?:=|>|:{1,3}=|\\|\\|:|<=|=>|:|\\?=)(?:'|\"|\\s|=|\\x60){0,5}([0-9a-z\\-_.=]{10,150})(?:['|\"|\\n|\\r|\\s|\\x60|;]|$)"


================================================
FILE: examples/generic_with_filters.yml
================================================
detectors:
- name: generic-password
  keywords:
  - pass
  - access
  - auth
  - credential
  - cred
  - secret
  - token
  regex:
    secret: |-
      (?i)[\w.-]{0,50}?(?:access|auth|(?-i:[Aa]pi|API)|credential|creds|key|passw(?:or)?d|secret|token)(?:[ \t\w.-]{0,20})[\s'"]{0,3}(?:=|>|:{1,3}=|\|\||:|=>|\?=|,)[\x60'"\s=]{0,5}([\w.=-]{10,150}|[a-z0-9][a-z0-9+/]{11,}={0,3})(?:[\x60'"\s;]|\\[nr]|$)
  validations:
    secret: # name of the regex to apply these validations to
      contains_digit: true
      contains_special_char: true
  entropy: 3.5
  # exclude_regexes_capture:
  #   - |-
  #     (?i)(?:ignore)
  exclude_regexes_match:
    - |-
      (?i)(?:access(?:ibility|or)|access[_.-]?id|random[_.-]?access|api[_.-]?(?:id|name|version)|rapid|capital|[a-z0-9-]*?api[a-z0-9-]*?:jar:|author|X-MS-Exchange-Organization-Auth|Authentication-Results|(?:credentials?[_.-]?id|withCredentials)|(?:bucket|foreign|hot|idx|natural|primary|pub(?:lic)?|schema|sequence)[_.-]?key|key[_.-]?(?:alias|board|code|frame|id|length|mesh|name|pair|ring|selector|signature|size|stone|storetype|word|up|down|left|right)|key[_.-]?vault[_.-]?(?:id|name)|keyVaultToStoreSecrets|key(?:store|tab)[_.-]?(?:file|path)|issuerkeyhash|(?-i:[DdMm]onkey|[DM]ONKEY)|keying|(?:secret)[_.-]?(?:length|name|size)|UserSecretsId|(?:io\.jsonwebtoken[ \t]?:[ \t]?[\w-]+)|(?:api|credentials|token)[_.-]?(?:endpoint|ur[il])|public[_.-]?token|(?:key|token)[_.-]?file|(?-i:(?:[A-Z_]+=\n[A-Z_]+=|[a-z_]+=\n[a-z_]+=)(?:\n|\z))|(?-i:(?:[A-Z.]+=\n[A-Z.]+=|[a-z.]+=\n[a-z.]+=)(?:\n|\z)))
  exclude_words:
    - "exclude"
    - "000000"
    - "aaaaaa"
    - "about"
    - "abstract"
    - "academy"
    - "acces"
    - "account"
    - "act-"
    - "act."
    - "act_"
    - "action"
    - "active"
    - "actively"
    - "activity"
    - "adapter"
    - "add-"
    - "add."
    - "add_"
    - "add-on"
    - "addon"
    - "addres"
    - "admin"
    - "adobe"
    - "advanced"
    - "adventure"
    - "agent"
    - "agile"
    - "air-"
    - "air."
    - "air_"
    - "ajax"
    - "akka"
    - "alert"
    - "alfred"
    - "algorithm"
    - "all-"
    - "all."
    - "all_"
    - "alloy"
    - "alpha"
    - "amazon"
    - "amqp"
    - "analysi"
    - "analytic"
    - "analyzer"
    - "android"
    - "angular"
    - "angularj"
    - "animate"
    - "animation"
    - "another"
    - "ansible"
    - "answer"
    - "ant-"
    - "ant."
    - "ant_"
    - "any-"
    - "any."
    - "any_"
    - "apache"
    - "app-"
    - "app-"
    - "app."
    - "app."
    - "app_"
    - "app_"
    - "apple"
    - "arch"
    - "archive"
    - "archived"
    - "arduino"
    - "array"
    - "art-"
    - "art."
    - "art_"
    - "article"
    - "asp-"
    - "asp."
    - "asp_"
    - "asset"
    - "async"
    - "atom"
    - "attention"
    - "audio"
    - "audit"
    - "aura"
    - "auth"
    - "author"
    - "author"
    - "authorize"
    - "auto"
    - "automated"
    - "automatic"
    - "awesome"
    - "aws_"
    - "azure"
    - "back"
    - "backbone"
    - "backend"
    - "backup"
    - "bar-"
    - "bar."
    - "bar_"
    - "base"
    - "based"
    - "bash"
    - "basic"
    - "batch"
    - "been"
    - "beer"
    - "behavior"
    - "being"
    - "benchmark"
    - "best"
    - "beta"
    - "better"
    - "big-"
    - "big."
    - "big_"
    - "binary"
    - "binding"
    - "bit-"
    - "bit."
    - "bit_"
    - "bitcoin"
    - "block"
    - "blog"
    - "board"
    - "book"
    - "bookmark"
    - "boost"
    - "boot"
    - "bootstrap"
    - "bosh"
    - "bot-"
    - "bot."
    - "bot_"
    - "bower"
    - "box-"
    - "box."
    - "box_"
    - "boxen"
    - "bracket"
    - "branch"
    - "bridge"
    - "browser"
    - "brunch"
    - "buffer"
    - "bug-"
    - "bug."
    - "bug_"
    - "build"
    - "builder"
    - "building"
    - "buildout"
    - "buildpack"
    - "built"
    - "bundle"
    - "busines"
    - "but-"
    - "but."
    - "but_"
    - "button"
    - "cache"
    - "caching"
    - "cakephp"
    - "calendar"
    - "call"
    - "camera"
    - "campfire"
    - "can-"
    - "can."
    - "can_"
    - "canva"
    - "captcha"
    - "capture"
    - "card"
    - "carousel"
    - "case"
    - "cassandra"
    - "cat-"
    - "cat."
    - "cat_"
    - "category"
    - "center"
    - "cento"
    - "challenge"
    - "change"
    - "changelog"
    - "channel"
    - "chart"
    - "chat"
    - "cheat"
    - "check"
    - "checker"
    - "chef"
    - "ches"
    - "chinese"
    - "chosen"
    - "chrome"
    - "ckeditor"
    - "clas"
    - "classe"
    - "classic"
    - "clean"
    - "cli-"
    - "cli."
    - "cli_"
    - "client"
    - "client"
    - "clojure"
    - "clone"
    - "closure"
    - "cloud"
    - "club"
    - "cluster"
    - "cms-"
    - "cms_"
    - "coco"
    - "code"
    - "coding"
    - "coffee"
    - "color"
    - "combination"
    - "combo"
    - "command"
    - "commander"
    - "comment"
    - "commit"
    - "common"
    - "community"
    - "compas"
    - "compiler"
    - "complete"
    - "component"
    - "composer"
    - "computer"
    - "computing"
    - "con-"
    - "con."
    - "con_"
    - "concept"
    - "conf"
    - "config"
    - "config"
    - "connect"
    - "connector"
    - "console"
    - "contact"
    - "container"
    - "contao"
    - "content"
    - "contest"
    - "context"
    - "control"
    - "convert"
    - "converter"
    - "conway'"
    - "cookbook"
    - "cookie"
    - "cool"
    - "copy"
    - "cordova"
    - "core"
    - "couchbase"
    - "couchdb"
    - "countdown"
    - "counter"
    - "course"
    - "craft"
    - "crawler"
    - "create"
    - "creating"
    - "creator"
    - "credential"
    - "crm-"
    - "crm."
    - "crm_"
    - "cros"
    - "crud"
    - "csv-"
    - "csv."
    - "csv_"
    - "cube"
    - "cucumber"
    - "cuda"
    - "current"
    - "currently"
    - "custom"
    - "daemon"
    - "dark"
    - "dart"
    - "dash"
    - "dashboard"
    - "data"
    - "database"
    - "date"
    - "day-"
    - "day."
    - "day_"
    - "dead"
    - "debian"
    - "debug"
    - "debug"
    - "debugger"
    - "deck"
    - "define"
    - "del-"
    - "del."
    - "del_"
    - "delete"
    - "demo"
    - "deploy"
    - "design"
    - "designer"
    - "desktop"
    - "detection"
    - "detector"
    - "dev-"
    - "dev."
    - "dev_"
    - "develop"
    - "developer"
    - "device"
    - "devise"
    - "diff"
    - "digital"
    - "directive"
    - "directory"
    - "discovery"
    - "display"
    - "django"
    - "dns-"
    - "dns_"
    - "doc-"
    - "doc-"
    - "doc."
    - "doc."
    - "doc_"
    - "doc_"
    - "docker"
    - "docpad"
    - "doctrine"
    - "document"
    - "doe-"
    - "doe."
    - "doe_"
    - "dojo"
    - "dom-"
    - "dom."
    - "dom_"
    - "domain"
    - "done"
    - "don't"
    - "dot-"
    - "dot."
    - "dot_"
    - "dotfile"
    - "download"
    - "draft"
    - "drag"
    - "drill"
    - "drive"
    - "driven"
    - "driver"
    - "drop"
    - "dropbox"
    - "drupal"
    - "dsl-"
    - "dsl."
    - "dsl_"
    - "dynamic"
    - "easy"
    - "_ec2_"
    - "ecdsa"
    - "eclipse"
    - "edit"
    - "editing"
    - "edition"
    - "editor"
    - "element"
    - "emac"
    - "email"
    - "embed"
    - "embedded"
    - "ember"
    - "emitter"
    - "emulator"
    - "encoding"
    - "endpoint"
    - "engine"
    - "english"
    - "enhanced"
    - "entity"
    - "entry"
    - "env_"
    - "episode"
    - "erlang"
    - "error"
    - "espresso"
    - "event"
    - "evented"
    - "example"
    - "example"
    - "exchange"
    - "exercise"
    - "experiment"
    - "expire"
    - "exploit"
    - "explorer"
    - "export"
    - "exporter"
    - "expres"
    - "ext-"
    - "ext."
    - "ext_"
    - "extended"
    - "extension"
    - "external"
    - "extra"
    - "extractor"
    - "fabric"
    - "facebook"
    - "factory"
    - "fake"
    - "fast"
    - "feature"
    - "feed"
    - "fewfwef"
    - "ffmpeg"
    - "field"
    - "file"
    - "filter"
    - "find"
    - "finder"
    - "firefox"
    - "firmware"
    - "first"
    - "fish"
    - "fix-"
    - "fix_"
    - "flash"
    - "flask"
    - "flat"
    - "flex"
    - "flexible"
    - "flickr"
    - "flow"
    - "fluent"
    - "fluentd"
    - "fluid"
    - "folder"
    - "font"
    - "force"
    - "foreman"
    - "fork"
    - "form"
    - "format"
    - "formatter"
    - "forum"
    - "foundry"
    - "framework"
    - "free"
    - "friend"
    - "friendly"
    - "front-end"
    - "frontend"
    - "ftp-"
    - "ftp."
    - "ftp_"
    - "fuel"
    - "full"
    - "fun-"
    - "fun."
    - "fun_"
    - "func"
    - "future"
    - "gaia"
    - "gallery"
    - "game"
    - "gateway"
    - "gem-"
    - "gem."
    - "gem_"
    - "gen-"
    - "gen."
    - "gen_"
    - "general"
    - "generator"
    - "generic"
    - "genetic"
    - "get-"
    - "get."
    - "get_"
    - "getenv"
    - "getting"
    - "ghost"
    - "gist"
    - "git-"
    - "git."
    - "git_"
    - "github"
    - "gitignore"
    - "gitlab"
    - "glas"
    - "gmail"
    - "gnome"
    - "gnu-"
    - "gnu."
    - "gnu_"
    - "goal"
    - "golang"
    - "gollum"
    - "good"
    - "google"
    - "gpu-"
    - "gpu."
    - "gpu_"
    - "gradle"
    - "grail"
    - "graph"
    - "graphic"
    - "great"
    - "grid"
    - "groovy"
    - "group"
    - "grunt"
    - "guard"
    - "gui-"
    - "gui."
    - "gui_"
    - "guide"
    - "guideline"
    - "gulp"
    - "gwt-"
    - "gwt."
    - "gwt_"
    - "hack"
    - "hackathon"
    - "hacker"
    - "hacking"
    - "hadoop"
    - "haml"
    - "handler"
    - "hardware"
    - "has-"
    - "has_"
    - "hash"
    - "haskell"
    - "have"
    - "haxe"
    - "hello"
    - "help"
    - "helper"
    - "here"
    - "hero"
    - "heroku"
    - "high"
    - "hipchat"
    - "history"
    - "home"
    - "homebrew"
    - "homepage"
    - "hook"
    - "host"
    - "hosting"
    - "hot-"
    - "hot."
    - "hot_"
    - "house"
    - "how-"
    - "how."
    - "how_"
    - "html"
    - "http"
    - "hub-"
    - "hub."
    - "hub_"
    - "hubot"
    - "human"
    - "icon"
    - "ide-"
    - "ide."
    - "ide_"
    - "idea"
    - "identity"
    - "idiomatic"
    - "image"
    - "impact"
    - "import"
    - "important"
    - "importer"
    - "impres"
    - "index"
    - "infinite"
    - "info"
    - "injection"
    - "inline"
    - "input"
    - "inside"
    - "inspector"
    - "instagram"
    - "install"
    - "installer"
    - "instant"
    - "intellij"
    - "interface"
    - "internet"
    - "interview"
    - "into"
    - "intro"
    - "ionic"
    - "iphone"
    - "ipython"
    - "irc-"
    - "irc_"
    - "iso-"
    - "iso."
    - "iso_"
    - "issue"
    - "jade"
    - "jasmine"
    - "java"
    - "jbos"
    - "jekyll"
    - "jenkin"
    - "jetbrains"
    - "job-"
    - "job."
    - "job_"
    - "joomla"
    - "jpa-"
    - "jpa."
    - "jpa_"
    - "jquery"
    - "json"
    - "just"
    - "kafka"
    - "karma"
    - "kata"
    - "kernel"
    - "keyboard"
    - "kindle"
    - "kit-"
    - "kit."
    - "kit_"
    - "kitchen"
    - "knife"
    - "koan"
    - "kohana"
    - "lab-"
    - "lab-"
    - "lab."
    - "lab."
    - "lab_"
    - "lab_"
    - "lambda"
    - "lamp"
    - "language"
    - "laravel"
    - "last"
    - "latest"
    - "latex"
    - "launcher"
    - "layer"
    - "layout"
    - "lazy"
    - "ldap"
    - "leaflet"
    - "league"
    - "learn"
    - "learning"
    - "led-"
    - "led."
    - "led_"
    - "leetcode"
    - "les-"
    - "les."
    - "les_"
    - "level"
    - "leveldb"
    - "lib-"
    - "lib."
    - "lib_"
    - "librarie"
    - "library"
    - "license"
    - "life"
    - "liferay"
    - "light"
    - "lightbox"
    - "like"
    - "line"
    - "link"
    - "linked"
    - "linkedin"
    - "linux"
    - "lisp"
    - "list"
    - "lite"
    - "little"
    - "load"
    - "loader"
    - "local"
    - "location"
    - "lock"
    - "log-"
    - "log."
    - "log_"
    - "logger"
    - "logging"
    - "logic"
    - "login"
    - "logstash"
    - "longer"
    - "look"
    - "love"
    - "lua-"
    - "lua."
    - "lua_"
    - "mac-"
    - "mac."
    - "mac_"
    - "machine"
    - "made"
    - "magento"
    - "magic"
    - "mail"
    - "make"
    - "maker"
    - "making"
    - "man-"
    - "man."
    - "man_"
    - "manage"
    - "manager"
    - "manifest"
    - "manual"
    - "map-"
    - "map-"
    - "map."
    - "map."
    - "map_"
    - "map_"
    - "mapper"
    - "mapping"
    - "markdown"
    - "markup"
    - "master"
    - "math"
    - "matrix"
    - "maven"
    - "md5"
    - "mean"
    - "media"
    - "mediawiki"
    - "meetup"
    - "memcached"
    - "memory"
    - "menu"
    - "merchant"
    - "message"
    - "messaging"
    - "meta"
    - "metadata"
    - "meteor"
    - "method"
    - "metric"
    - "micro"
    - "middleman"
    - "migration"
    - "minecraft"
    - "miner"
    - "mini"
    - "minimal"
    - "mirror"
    - "mit-"
    - "mit."
    - "mit_"
    - "mobile"
    - "mocha"
    - "mock"
    - "mod-"
    - "mod."
    - "mod_"
    - "mode"
    - "model"
    - "modern"
    - "modular"
    - "module"
    - "modx"
    - "money"
    - "mongo"
    - "mongodb"
    - "mongoid"
    - "mongoose"
    - "monitor"
    - "monkey"
    - "more"
    - "motion"
    - "moved"
    - "movie"
    - "mozilla"
    - "mqtt"
    - "mule"
    - "multi"
    - "multiple"
    - "music"
    - "mustache"
    - "mvc-"
    - "mvc."
    - "mvc_"
    - "mysql"
    - "nagio"
    - "name"
    - "native"
    - "need"
    - "neo-"
    - "neo."
    - "neo_"
    - "nest"
    - "nested"
    - "net-"
    - "net."
    - "net_"
    - "nette"
    - "network"
    - "new-"
    - "new-"
    - "new."
    - "new."
    - "new_"
    - "new_"
    - "next"
    - "nginx"
    - "ninja"
    - "nlp-"
    - "nlp."
    - "nlp_"
    - "node"
    - "nodej"
    - "nosql"
    - "not-"
    - "not."
    - "not_"
    - "note"
    - "notebook"
    - "notepad"
    - "notice"
    - "notifier"
    - "now-"
    - "now."
    - "now_"
    - "number"
    - "oauth"
    - "object"
    - "objective"
    - "obsolete"
    - "ocaml"
    - "octopres"
    - "official"
    - "old-"
    - "old."
    - "old_"
    - "onboard"
    - "online"
    - "only"
    - "open"
    - "opencv"
    - "opengl"
    - "openshift"
    - "openwrt"
    - "option"
    - "oracle"
    - "org-"
    - "org."
    - "org_"
    - "origin"
    - "original"
    - "orm-"
    - "orm."
    - "orm_"
    - "osx-"
    - "osx_"
    - "our-"
    - "our."
    - "our_"
    - "out-"
    - "out."
    - "out_"
    - "output"
    - "over"
    - "overview"
    - "own-"
    - "own."
    - "own_"
    - "pack"
    - "package"
    - "packet"
    - "page"
    - "page"
    - "panel"
    - "paper"
    - "paperclip"
    - "para"
    - "parallax"
    - "parallel"
    - "parse"
    - "parser"
    - "parsing"
    - "particle"
    - "party"
    - "password"
    - "patch"
    - "path"
    - "pattern"
    - "payment"
    - "paypal"
    - "pdf-"
    - "pdf."
    - "pdf_"
    - "pebble"
    - "people"
    - "perl"
    - "personal"
    - "phalcon"
    - "phoenix"
    - "phone"
    - "phonegap"
    - "photo"
    - "php-"
    - "php."
    - "php_"
    - "physic"
    - "picker"
    - "pipeline"
    - "platform"
    - "play"
    - "player"
    - "please"
    - "plu-"
    - "plu."
    - "plu_"
    - "plug-in"
    - "plugin"
    - "plupload"
    - "png-"
    - "png."
    - "png_"
    - "poker"
    - "polyfill"
    - "polymer"
    - "pool"
    - "pop-"
    - "pop."
    - "pop_"
    - "popcorn"
    - "popup"
    - "port"
    - "portable"
    - "portal"
    - "portfolio"
    - "post"
    - "power"
    - "powered"
    - "powerful"
    - "prelude"
    - "pretty"
    - "preview"
    - "principle"
    - "print"
    - "pro-"
    - "pro."
    - "pro_"
    - "problem"
    - "proc"
    - "product"
    - "profile"
    - "profiler"
    - "program"
    - "progres"
    - "project"
    - "protocol"
    - "prototype"
    - "provider"
    - "proxy"
    - "public"
    - "pull"
    - "puppet"
    - "pure"
    - "purpose"
    - "push"
    - "pusher"
    - "pyramid"
    - "python"
    - "quality"
    - "query"
    - "queue"
    - "quick"
    - "rabbitmq"
    - "rack"
    - "radio"
    - "rail"
    - "railscast"
    - "random"
    - "range"
    - "raspberry"
    - "rdf-"
    - "rdf."
    - "rdf_"
    - "react"
    - "reactive"
    - "read"
    - "reader"
    - "readme"
    - "ready"
    - "real"
    - "reality"
    - "real-time"
    - "realtime"
    - "recipe"
    - "recorder"
    - "red-"
    - "red."
    - "red_"
    - "reddit"
    - "redi"
    - "redmine"
    - "reference"
    - "refinery"
    - "refresh"
    - "registry"
    - "related"
    - "release"
    - "remote"
    - "rendering"
    - "repo"
    - "report"
    - "request"
    - "require"
    - "required"
    - "requirej"
    - "research"
    - "resource"
    - "response"
    - "resque"
    - "rest"
    - "restful"
    - "resume"
    - "reveal"
    - "reverse"
    - "review"
    - "riak"
    - "rich"
    - "right"
    - "ring"
    - "robot"
    - "role"
    - "room"
    - "router"
    - "routing"
    - "rpc-"
    - "rpc."
    - "rpc_"
    - "rpg-"
    - "rpg."
    - "rpg_"
    - "rspec"
    - "ruby-"
    - "ruby."
    - "ruby_"
    - "rule"
    - "run-"
    - "run."
    - "run_"
    - "runner"
    - "running"
    - "runtime"
    - "rust"
    - "rvm-"
    - "rvm."
    - "rvm_"
    - "salt"
    - "sample"
    - "sample"
    - "sandbox"
    - "sas-"
    - "sas."
    - "sas_"
    - "sbt-"
    - "sbt."
    - "sbt_"
    - "scala"
    - "scalable"
    - "scanner"
    - "schema"
    - "scheme"
    - "school"
    - "science"
    - "scraper"
    - "scratch"
    - "screen"
    - "script"
    - "scroll"
    - "scs-"
    - "scs."
    - "scs_"
    - "sdk-"
    - "sdk."
    - "sdk_"
    - "sdl-"
    - "sdl."
    - "sdl_"
    - "search"
    - "secure"
    - "security"
    - "see-"
    - "see."
    - "see_"
    - "seed"
    - "select"
    - "selector"
    - "selenium"
    - "semantic"
    - "sencha"
    - "send"
    - "sentiment"
    - "serie"
    - "server"
    - "service"
    - "session"
    - "set-"
    - "set."
    - "set_"
    - "setting"
    - "setting"
    - "setup"
    - "sha1"
    - "sha2"
    - "sha256"
    - "share"
    - "shared"
    - "sharing"
    - "sheet"
    - "shell"
    - "shield"
    - "shipping"
    - "shop"
    - "shopify"
    - "shortener"
    - "should"
    - "show"
    - "showcase"
    - "side"
    - "silex"
    - "simple"
    - "simulator"
    - "single"
    - "site"
    - "skeleton"
    - "sketch"
    - "skin"
    - "slack"
    - "slide"
    - "slider"
    - "slim"
    - "small"
    - "smart"
    - "smtp"
    - "snake"
    - "snapshot"
    - "snippet"
    - "soap"
    - "social"
    - "socket"
    - "software"
    - "solarized"
    - "solr"
    - "solution"
    - "solver"
    - "some"
    - "soon"
    - "source"
    - "space"
    - "spark"
    - "spatial"
    - "spec"
    - "sphinx"
    - "spine"
    - "spotify"
    - "spree"
    - "spring"
    - "sprite"
    - "sql-"
    - "sql."
    - "sql_"
    - "sqlite"
    - "ssh-"
    - "ssh."
    - "ssh_"
    - "stack"
    - "staging"
    - "standard"
    - "stanford"
    - "start"
    - "started"
    - "starter"
    - "startup"
    - "stat"
    - "statamic"
    - "state"
    - "static"
    - "statistic"
    - "statsd"
    - "statu"
    - "steam"
    - "step"
    - "still"
    - "stm-"
    - "stm."
    - "stm_"
    - "storage"
    - "store"
    - "storm"
    - "story"
    - "strategy"
    - "stream"
    - "streaming"
    - "string"
    - "stripe"
    - "structure"
    - "studio"
    - "study"
    - "stuff"
    - "style"
    - "sublime"
    - "sugar"
    - "suite"
    - "summary"
    - "super"
    - "support"
    - "supported"
    - "svg-"
    - "svg."
    - "svg_"
    - "svn-"
    - "svn."
    - "svn_"
    - "swagger"
    - "swift"
    - "switch"
    - "switcher"
    - "symfony"
    - "symphony"
    - "sync"
    - "synopsi"
    - "syntax"
    - "system"
    - "system"
    - "tab-"
    - "tab-"
    - "tab."
    - "tab."
    - "tab_"
    - "tab_"
    - "table"
    - "tag-"
    - "tag-"
    - "tag."
    - "tag."
    - "tag_"
    - "tag_"
    - "talk"
    - "target"
    - "task"
    - "tcp-"
    - "tcp."
    - "tcp_"
    - "tdd-"
    - "tdd."
    - "tdd_"
    - "team"
    - "tech"
    - "template"
    - "term"
    - "terminal"
    - "testing"
    - "tetri"
    - "text"
    - "textmate"
    - "theme"
    - "theory"
    - "three"
    - "thrift"
    - "time"
    - "timeline"
    - "timer"
    - "tiny"
    - "tinymce"
    - "tip-"
    - "tip."
    - "tip_"
    - "title"
    - "todo"
    - "todomvc"
    - "token"
    - "tool"
    - "toolbox"
    - "toolkit"
    - "top-"
    - "top."
    - "top_"
    - "tornado"
    - "touch"
    - "tower"
    - "tracker"
    - "tracking"
    - "traffic"
    - "training"
    - "transfer"
    - "translate"
    - "transport"
    - "tree"
    - "trello"
    - "try-"
    - "try."
    - "try_"
    - "tumblr"
    - "tut-"
    - "tut."
    - "tut_"
    - "tutorial"
    - "tweet"
    - "twig"
    - "twitter"
    - "type"
    - "typo"
    - "ubuntu"
    - "uiview"
    - "ultimate"
    - "under"
    - "unit"
    - "unity"
    - "universal"
    - "unix"
    - "update"
    - "updated"
    - "upgrade"
    - "upload"
    - "uploader"
    - "uri-"
    - "uri."
    - "uri_"
    - "url-"
    - "url."
    - "url_"
    - "usage"
    - "usb-"
    - "usb."
    - "usb_"
    - "use-"
    - "use."
    - "use_"
    - "used"
    - "useful"
    - "user"
    - "using"
    - "util"
    - "utilitie"
    - "utility"
    - "vagrant"
    - "validator"
    - "value"
    - "variou"
    - "varnish"
    - "version"
    - "via-"
    - "via."
    - "via_"
    - "video"
    - "view"
    - "viewer"
    - "vim-"
    - "vim."
    - "vim_"
    - "vimrc"
    - "virtual"
    - "vision"
    - "visual"
    - "vpn"
    - "want"
    - "warning"
    - "watch"
    - "watcher"
    - "wave"
    - "way-"
    - "way."
    - "way_"
    - "weather"
    - "web-"
    - "web_"
    - "webapp"
    - "webgl"
    - "webhook"
    - "webkit"
    - "webrtc"
    - "website"
    - "websocket"
    - "welcome"
    - "welcome"
    - "what"
    - "what'"
    - "when"
    - "where"
    - "which"
    - "why-"
    - "why."
    - "why_"
    - "widget"
    - "wifi"
    - "wiki"
    - "win-"
    - "win."
    - "win_"
    - "window"
    - "wip-"
    - "wip."
    - "wip_"
    - "within"
    - "without"
    - "wizard"
    - "word"
    - "wordpres"
    - "work"
    - "worker"
    - "workflow"
    - "working"
    - "workshop"
    - "world"
    - "wrapper"
    - "write"
    - "writer"
    - "writing"
    - "written"
    - "www-"
    - "www."
    - "www_"
    - "xamarin"
    - "xcode"
    - "xml-"
    - "xml."
    - "xml_"
    - "xmpp"
    - "xxxxxx"
    - "yahoo"
    - "yaml"
    - "yandex"
    - "yeoman"
    - "yet-"
    - "yet."
    - "yet_"
    - "yii-"
    - "yii."
    - "yii_"
    - "youtube"
    - "yui-"
    - "yui."
    - "yui_"
    - "zend"
    - "zero"
    - "zip-"
    - "zip."
    - "zip_"
    - "zsh-"
    - "zsh."
    - "zsh_"

================================================
FILE: go.mod
================================================
module github.com/trufflesecurity/trufflehog/v3

go 1.24.0

toolchain go1.24.5

replace github.com/jpillora/overseer => github.com/trufflesecurity/overseer v1.2.8

// Coinbase archived this library and it has some vulnerable dependencies so we've forked.
replace github.com/coinbase/waas-client-library-go => github.com/trufflesecurity/waas-client-library-go v1.0.9

require (
	cloud.google.com/go/secretmanager v1.16.0
	cloud.google.com/go/storage v1.56.1
	github.com/BobuSumisu/aho-corasick v1.0.3
	github.com/TheZeroSlave/zapsentry v1.23.0
	github.com/adrg/strutil v0.3.1
	github.com/alecthomas/kingpin/v2 v2.4.0
	github.com/avast/apkparser v0.0.0-20250626104540-d53391f4d69d
	github.com/aws/aws-sdk-go-v2 v1.39.0
	github.com/aws/aws-sdk-go-v2/config v1.31.7
	github.com/aws/aws-sdk-go-v2/credentials v1.18.11
	github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.19.5
	github.com/aws/aws-sdk-go-v2/service/s3 v1.88.0
	github.com/aws/aws-sdk-go-v2/service/sns v1.38.2
	github.com/aws/aws-sdk-go-v2/service/sts v1.38.3
	github.com/aws/smithy-go v1.23.0
	github.com/aymanbagabas/go-osc52 v1.2.1
	github.com/bill-rich/go-syslog v0.0.0-20220413021637-49edb52a574c
	github.com/bradleyfalzon/ghinstallation/v2 v2.16.0
	github.com/brianvoe/gofakeit/v7 v7.6.0
	github.com/charmbracelet/bubbles v0.18.0
	github.com/charmbracelet/bubbletea v1.3.6
	github.com/charmbracelet/glamour v0.10.0
	github.com/charmbracelet/lipgloss v1.1.1-0.20250404203927-76690c660834
	github.com/couchbase/gocb/v2 v2.11.0
	github.com/crewjam/rfc5424 v0.1.0
	github.com/csnewman/dextk v0.3.0
	github.com/docker/docker v28.3.3+incompatible
	github.com/dustin/go-humanize v1.0.1
	github.com/elastic/go-elasticsearch/v8 v8.17.1
	github.com/envoyproxy/protoc-gen-validate v1.2.1
	github.com/fatih/color v1.18.0
	github.com/felixge/fgprof v0.9.5
	github.com/gabriel-vasile/mimetype v1.4.10
	github.com/getsentry/sentry-go v0.32.0
	github.com/go-errors/errors v1.5.1
	github.com/go-git/go-git/v5 v5.13.2
	github.com/go-logr/logr v1.4.3
	github.com/go-logr/zapr v1.3.0
	github.com/go-redis/redis v6.15.9+incompatible
	github.com/go-sql-driver/mysql v1.8.1
	github.com/gobwas/glob v0.2.3
	github.com/golang-jwt/jwt/v5 v5.2.3
	github.com/google/go-cmp v0.7.0
	github.com/google/go-containerregistry v0.20.6
	github.com/google/go-github/v67 v67.0.0
	github.com/google/uuid v1.6.0
	github.com/googleapis/gax-go/v2 v2.16.0
	github.com/hashicorp/go-retryablehttp v0.7.8
	github.com/hashicorp/golang-lru/v2 v2.0.7
	github.com/jedib0t/go-pretty/v6 v6.6.8
	github.com/jlaffaye/ftp v0.2.0
	github.com/joho/godotenv v1.5.1
	github.com/jpillora/overseer v1.1.6
	github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213
	github.com/klauspost/pgzip v1.2.6
	github.com/kylelemons/godebug v1.1.0
	github.com/lestrrat-go/jwx/v3 v3.0.12
	github.com/lib/pq v1.10.9
	github.com/lrstanley/bubblezone v0.0.0-20250404061050-e13639e27357
	github.com/mariduv/ldap-verify v0.0.2
	github.com/marusama/semaphore/v2 v2.5.0
	github.com/mattn/go-isatty v0.0.20
	github.com/mholt/archives v0.0.0-20241216060121-23e0af8fe73d
	github.com/microsoft/go-mssqldb v1.8.2
	github.com/mitchellh/go-ps v1.0.0
	github.com/muesli/reflow v0.3.0
	github.com/patrickmn/go-cache v2.1.0+incompatible
	github.com/paulbellamy/ratecounter v0.2.0
	github.com/pkg/errors v0.9.1
	github.com/prometheus/client_golang v1.20.5
	github.com/rabbitmq/amqp091-go v1.10.0
	github.com/repeale/fp-go v0.11.1
	github.com/sassoftware/go-rpmutils v0.4.0
	github.com/schollz/progressbar/v3 v3.17.1
	github.com/sendgrid/sendgrid-go v3.16.1+incompatible
	github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3
	github.com/shuheiktgw/go-travis v0.3.1
	github.com/shurcooL/githubv4 v0.0.0-20240727222349-48295856cce7
	github.com/stretchr/testify v1.11.1
	github.com/testcontainers/testcontainers-go v0.34.0
	github.com/testcontainers/testcontainers-go/modules/elasticsearch v0.34.0
	github.com/testcontainers/testcontainers-go/modules/mongodb v0.34.0
	github.com/testcontainers/testcontainers-go/modules/mssql v0.34.0
	github.com/testcontainers/testcontainers-go/modules/mysql v0.34.0
	github.com/testcontainers/testcontainers-go/modules/postgres v0.34.0
	github.com/trufflesecurity/disk-buffer-reader v0.2.1
	github.com/wasilibs/go-re2 v1.9.0
	github.com/xo/dburl v0.23.8
	gitlab.com/gitlab-org/api/client-go v1.12.0
	go.mongodb.org/mongo-driver v1.17.4
	go.uber.org/automaxprocs v1.6.0
	go.uber.org/mock v0.6.0
	go.uber.org/zap v1.27.0
	golang.org/x/crypto v0.46.0
	golang.org/x/net v0.48.0
	golang.org/x/oauth2 v0.34.0
	golang.org/x/sync v0.19.0
	golang.org/x/text v0.32.0
	golang.org/x/time v0.14.0
	google.golang.org/api v0.259.0
	google.golang.org/protobuf v1.36.11
	gopkg.in/h2non/gock.v1 v1.1.2
	gopkg.in/yaml.v2 v2.4.0
	gopkg.in/yaml.v3 v3.0.1
	pault.ag/go/debian v0.18.0
	pgregory.net/rapid v1.1.0
	sigs.k8s.io/yaml v1.4.0
)

require (
	cel.dev/expr v0.25.1 // indirect
	cloud.google.com/go v0.121.6 // indirect
	cloud.google.com/go/auth v0.18.0 // indirect
	cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect
	cloud.google.com/go/compute/metadata v0.9.0 // indirect
	cloud.google.com/go/iam v1.5.3 // indirect
	cloud.google.com/go/monitoring v1.24.3 // indirect
	dario.cat/mergo v1.0.0 // indirect
	filippo.io/edwards25519 v1.1.0 // indirect
	github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
	github.com/Azure/go-ntlmssp v0.1.0 // indirect
	github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2 // indirect
	github.com/DataDog/zstd v1.5.5 // indirect
	github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 // indirect
	github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.53.0 // indirect
	github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0 // indirect
	github.com/Microsoft/go-winio v0.6.2 // indirect
	github.com/ProtonMail/go-crypto v1.1.5 // indirect
	github.com/STARRY-S/zip v0.2.1 // indirect
	github.com/alecthomas/chroma/v2 v2.14.0 // indirect
	github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect
	github.com/andybalholm/brotli v1.1.1 // indirect
	github.com/atotto/clipboard v0.1.4 // indirect
	github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.1 // indirect
	github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.7 // indirect
	github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.7 // indirect
	github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.7 // indirect
	github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect
	github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.7 // indirect
	github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1 // indirect
	github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.8.7 // indirect
	github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.7 // indirect
	github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.7 // indirect
	github.com/aws/aws-sdk-go-v2/service/sso v1.29.2 // indirect
	github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.3 // indirect
	github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
	github.com/aymerick/douceur v0.2.0 // indirect
	github.com/beorn7/perks v1.0.1 // indirect
	github.com/bodgit/plumbing v1.3.0 // indirect
	github.com/bodgit/sevenzip v1.6.0 // indirect
	github.com/bodgit/windows v1.0.1 // indirect
	github.com/cenkalti/backoff/v4 v4.2.1 // indirect
	github.com/cespare/xxhash/v2 v2.3.0 // indirect
	github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc // indirect
	github.com/charmbracelet/x/ansi v0.9.3 // indirect
	github.com/charmbracelet/x/cellbuf v0.0.13 // indirect
	github.com/charmbracelet/x/exp/slice v0.0.0-20250327172914-2fdc97757edf // indirect
	github.com/charmbracelet/x/term v0.2.1 // indirect
	github.com/cloudflare/circl v1.6.1 // indirect
	github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f // indirect
	github.com/containerd/errdefs v1.0.0 // indirect
	github.com/containerd/errdefs/pkg v0.3.0 // indirect
	github.com/containerd/log v0.1.0 // indirect
	github.com/containerd/platforms v0.2.1 // indirect
	github.com/containerd/stargz-snapshotter/estargz v0.16.3 // indirect
	github.com/couchbase/gocbcore/v10 v10.8.0 // indirect
	github.com/couchbase/gocbcoreps v0.1.3 // indirect
	github.com/couchbase/goprotostellar v1.0.2 // indirect
	github.com/couchbaselabs/gocbconnstr/v2 v2.0.0-20240607131231-fb385523de28 // indirect
	github.com/cpuguy83/dockercfg v0.3.2 // indirect
	github.com/cyphar/filepath-securejoin v0.3.6 // indirect
	github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
	github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 // indirect
	github.com/distribution/reference v0.6.0 // indirect
	github.com/dlclark/regexp2 v1.11.0 // indirect
	github.com/docker/cli v28.2.2+incompatible // indirect
	github.com/docker/distribution v2.8.3+incompatible // indirect
	github.com/docker/docker-credential-helpers v0.9.3 // indirect
	github.com/docker/go-connections v0.5.0 // indirect
	github.com/docker/go-units v0.5.0 // indirect
	github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 // indirect
	github.com/elastic/elastic-transport-go/v8 v8.6.1 // indirect
	github.com/emirpasic/gods v1.18.1 // indirect
	github.com/envoyproxy/go-control-plane/envoy v1.35.0 // indirect
	github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect
	github.com/felixge/httpsnoop v1.0.4 // indirect
	github.com/fsnotify/fsnotify v1.6.0 // indirect
	github.com/go-asn1-ber/asn1-ber v1.5.8-0.20250403174932-29230038a667 // indirect
	github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
	github.com/go-git/go-billy/v5 v5.6.2 // indirect
	github.com/go-jose/go-jose/v4 v4.1.3 // indirect
	github.com/go-logr/stdr v1.2.2 // indirect
	github.com/go-ole/go-ole v1.2.6 // indirect
	github.com/goccy/go-json v0.10.3 // indirect
	github.com/gofrs/flock v0.12.1 // indirect
	github.com/gogo/protobuf v1.3.2 // indirect
	github.com/golang-jwt/jwt/v4 v4.5.2 // indirect
	github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect
	github.com/golang-sql/sqlexp v0.1.0 // indirect
	github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
	github.com/golang/snappy v1.0.0 // indirect
	github.com/google/go-github/v72 v72.0.0 // indirect
	github.com/google/go-querystring v1.2.0 // indirect
	github.com/google/pprof v0.0.0-20240227163752-401108e1b7e7 // indirect
	github.com/google/s2a-go v0.1.9 // indirect
	github.com/googleapis/enterprise-certificate-proxy v0.3.7 // indirect
	github.com/gorilla/css v1.0.1 // indirect
	github.com/gorilla/websocket v1.5.3 // indirect
	github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect
	github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect
	github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 // indirect
	github.com/hashicorp/errwrap v1.1.0 // indirect
	github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
	github.com/hashicorp/go-multierror v1.1.1 // indirect
	github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
	github.com/jpillora/s3 v1.1.4 // indirect
	github.com/kevinburke/ssh_config v1.2.0 // indirect
	github.com/kjk/lzma v0.0.0-20161016003348-3fd93898850d // indirect
	github.com/klauspost/compress v1.18.0 // indirect
	github.com/lestrrat-go/blackmagic v1.0.4 // indirect
	github.com/lestrrat-go/httpcc v1.0.1 // indirect
	github.com/lestrrat-go/httprc/v3 v3.0.1 // indirect
	github.com/lestrrat-go/option v1.0.1 // indirect
	github.com/lestrrat-go/option/v2 v2.0.0 // indirect
	github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
	github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
	github.com/magiconair/properties v1.8.7 // indirect
	github.com/mattn/go-colorable v0.1.13 // indirect
	github.com/mattn/go-localereader v0.0.1 // indirect
	github.com/mattn/go-runewidth v0.0.16 // indirect
	github.com/microcosm-cc/bluemonday v1.0.27 // indirect
	github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect
	github.com/mitchellh/go-homedir v1.1.0 // indirect
	github.com/moby/docker-image-spec v1.3.1 // indirect
	github.com/moby/go-archive v0.1.0 // indirect
	github.com/moby/patternmatcher v0.6.0 // indirect
	github.com/moby/sys/sequential v0.6.0 // indirect
	github.com/moby/sys/user v0.4.0 // indirect
	github.com/moby/sys/userns v0.1.0 // indirect
	github.com/moby/term v0.5.0 // indirect
	github.com/montanaflynn/stats v0.7.1 // indirect
	github.com/morikuni/aec v1.0.0 // indirect
	github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
	github.com/muesli/cancelreader v0.2.2 // indirect
	github.com/muesli/termenv v0.16.0 // indirect
	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
	github.com/nwaples/rardecode/v2 v2.2.1 // indirect
	github.com/onsi/ginkgo v1.16.5 // indirect
	github.com/opencontainers/go-digest v1.0.0 // indirect
	github.com/opencontainers/image-spec v1.1.1 // indirect
	github.com/pierrec/lz4/v4 v4.1.21 // indirect
	github.com/pjbgf/sha1cd v0.3.2 // indirect
	github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
	github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
	github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
	github.com/prometheus/client_model v0.6.2 // indirect
	github.com/prometheus/common v0.55.0 // indirect
	github.com/prometheus/procfs v0.15.1 // indirect
	github.com/rivo/uniseg v0.4.7 // indirect
	github.com/sahilm/fuzzy v0.1.1-0.20230530133925-c48e322e2a8f // indirect
	github.com/segmentio/asm v1.2.1 // indirect
	github.com/sendgrid/rest v2.6.9+incompatible // indirect
	github.com/shirou/gopsutil/v3 v3.23.12 // indirect
	github.com/shoenig/go-m1cpu v0.1.6 // indirect
	github.com/shurcooL/graphql v0.0.0-20230722043721-ed46e5a46466 // indirect
	github.com/sirupsen/logrus v1.9.3 // indirect
	github.com/skeema/knownhosts v1.3.0 // indirect
	github.com/sorairolake/lzip-go v0.3.5 // indirect
	github.com/spiffe/go-spiffe/v2 v2.6.0 // indirect
	github.com/stretchr/objx v0.5.2 // indirect
	github.com/tetratelabs/wazero v1.9.0 // indirect
	github.com/therootcompany/xz v1.0.1 // indirect
	github.com/tklauser/go-sysconf v0.3.12 // indirect
	github.com/tklauser/numcpus v0.6.1 // indirect
	github.com/trufflesecurity/touchfile v0.1.1 // indirect
	github.com/ulikunitz/xz v0.5.12 // indirect
	github.com/vbatts/tar-split v0.12.1 // indirect
	github.com/wasilibs/wazero-helpers v0.0.0-20240620070341-3dff1577cd52 // indirect
	github.com/xanzy/ssh-agent v0.3.3 // indirect
	github.com/xdg-go/pbkdf2 v1.0.0 // indirect
	github.com/xdg-go/scram v1.1.2 // indirect
	github.com/xdg-go/stringprep v1.0.4 // indirect
	github.com/xhit/go-str2duration/v2 v2.1.0 // indirect
	github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect
	github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
	github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
	github.com/yuin/goldmark v1.7.8 // indirect
	github.com/yuin/goldmark-emoji v1.0.5 // indirect
	github.com/yusufpapurcu/wmi v1.2.3 // indirect
	go.opentelemetry.io/auto/sdk v1.2.1 // indirect
	go.opentelemetry.io/contrib/detectors/gcp v1.38.0 // indirect
	go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.62.0 // indirect
	go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect
	go.opentelemetry.io/otel v1.38.0 // indirect
	go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 // indirect
	go.opentelemetry.io/otel/metric v1.38.0 // indirect
	go.opentelemetry.io/otel/sdk v1.38.0 // indirect
	go.opentelemetry.io/otel/sdk/metric v1.38.0 // indirect
	go.opentelemetry.io/otel/trace v1.38.0 // indirect
	go.uber.org/multierr v1.11.0 // indirect
	go4.org v0.0.0-20230225012048-214862532bf5 // indirect
	golang.org/x/mod v0.30.0 // indirect
	golang.org/x/sys v0.39.0 // indirect
	golang.org/x/term v0.38.0 // indirect
	google.golang.org/genproto v0.0.0-20251202230838-ff82c1b0f217 // indirect
	google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect
	google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect
	google.golang.org/grpc v1.78.0 // indirect
	gopkg.in/warnings.v0 v0.1.2 // indirect
	pault.ag/go/topsort v0.1.1 // indirect
)


================================================
FILE: go.sum
================================================
cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=
cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
cloud.google.com/go v0.121.6 h1:waZiuajrI28iAf40cWgycWNgaXPO06dupuS+sgibK6c=
cloud.google.com/go v0.121.6/go.mod h1:coChdst4Ea5vUpiALcYKXEpR1S9ZgXbhEzzMcMR66vI=
cloud.google.com/go/auth v0.18.0 h1:wnqy5hrv7p3k7cShwAU/Br3nzod7fxoqG+k0VZ+/Pk0=
cloud.google.com/go/auth v0.18.0/go.mod h1:wwkPM1AgE1f2u6dG443MiWoD8C3BtOywNsUMcUTVDRo=
cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=
cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=
cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
cloud.google.com/go/iam v1.5.3 h1:+vMINPiDF2ognBJ97ABAYYwRgsaqxPbQDlMnbHMjolc=
cloud.google.com/go/iam v1.5.3/go.mod h1:MR3v9oLkZCTlaqljW6Eb2d3HGDGK5/bDv93jhfISFvU=
cloud.google.com/go/logging v1.13.1 h1:O7LvmO0kGLaHY/gq8cV7T0dyp6zJhYAOtZPX4TF3QtY=
cloud.google.com/go/logging v1.13.1/go.mod h1:XAQkfkMBxQRjQek96WLPNze7vsOmay9H5PqfsNYDqvw=
cloud.google.com/go/longrunning v0.7.0 h1:FV0+SYF1RIj59gyoWDRi45GiYUMM3K1qO51qoboQT1E=
cloud.google.com/go/longrunning v0.7.0/go.mod h1:ySn2yXmjbK9Ba0zsQqunhDkYi0+9rlXIwnoAf+h+TPY=
cloud.google.com/go/monitoring v1.24.3 h1:dde+gMNc0UhPZD1Azu6at2e79bfdztVDS5lvhOdsgaE=
cloud.google.com/go/monitoring v1.24.3/go.mod h1:nYP6W0tm3N9H/bOw8am7t62YTzZY+zUeQ+Bi6+2eonI=
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
cloud.google.com/go/secretmanager v1.16.0 h1:19QT7ZsLJ8FSP1k+4esQvuCD7npMJml6hYzilxVyT+k=
cloud.google.com/go/secretmanager v1.16.0/go.mod h1://C/e4I8D26SDTz1f3TQcddhcmiC3rMEl0S1Cakvs3Q=
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
cloud.google.com/go/storage v1.56.1 h1:n6gy+yLnHn0hTwBFzNn8zJ1kqWfR91wzdM8hjRF4wP0=
cloud.google.com/go/storage v1.56.1/go.mod h1:C9xuCZgFl3buo2HZU/1FncgvvOgTAs/rnh4gF4lMg0s=
cloud.google.com/go/trace v1.11.7 h1:kDNDX8JkaAG3R2nq1lIdkb7FCSi1rCmsEtKVsty7p+U=
cloud.google.com/go/trace v1.11.7/go.mod h1:TNn9d5V3fQVf6s4SCveVMIBS2LJUqo73GACmq/Tky0s=
dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk=
dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk=
github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 h1:E+OJmp2tPvt1W+amx48v1eqbjDYsgN+RzP4q16yV5eM=
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1/go.mod h1:a6xsAQUZg+VsS3TJ05SRp524Hs4pZ/AeFSr5ENf0Yjo=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0 h1:U2rTu3Ef+7w9FHKIAXM6ZyqF3UOWJZ12zIm8zECAFfg=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg=
github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 h1:jBQA3cKT4L2rWMpgE7Yt3Hwh2aUj8KXjIGLxjHeYNNo=
github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0/go.mod h1:4OG6tQ9EOP/MT0NMjDlRzWoVFxfu9rN9B2X+tlSVktg=
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.0.1 h1:MyVTgWR8qd/Jw1Le0NZebGBUCLbtak3bJ3z1OlqZBpw=
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys v1.0.1/go.mod h1:GpPjLhVR9dnUoJMyHWSPy71xY9/lcmpzIPZXmF0FCVY=
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.0 h1:D3occbWoio4EBLkbkevetNMAVX197GkzbUMtqjGWn80=
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.0/go.mod h1:bTSOgj05NGRuHHhQwAdPnYr9TOdNmKlZTgGLL6nyAdI=
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8=
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
github.com/Azure/go-ntlmssp v0.1.0 h1:DjFo6YtWzNqNvQdrwEyr/e4nhU3vRiwenz5QX7sFz+A=
github.com/Azure/go-ntlmssp v0.1.0/go.mod h1:NYqdhxd/8aAct/s4qSYZEerdPuH1liG2/X9DiVTbhpk=
github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2 h1:kYRSnvJju5gYVyhkij+RTJ/VR6QIUaCfWeaFm2ycsjQ=
github.com/AzureAD/microsoft-authentication-library-for-go v1.3.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
github.com/BobuSumisu/aho-corasick v1.0.3 h1:uuf+JHwU9CHP2Vx+wAy6jcksJThhJS9ehR8a+4nPE9g=
github.com/BobuSumisu/aho-corasick v1.0.3/go.mod h1:hm4jLcvZKI2vRF2WDU1N4p/jpWtpOzp3nLmi9AzX/XE=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ=
github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 h1:sBEjpZlNHzK1voKq9695PJSX2o5NEXl7/OL3coiIY0c=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.53.0 h1:owcC2UnmsZycprQ5RfRgjydWhuoxg71LUfyiQdijZuM=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.53.0/go.mod h1:ZPpqegjbE99EPKsu3iUWV22A04wzGPcAY/ziSIQEEgs=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.53.0 h1:4LP6hvB4I5ouTbGgWtixJhgED6xdf67twf9PoY96Tbg=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.53.0/go.mod h1:jUZ5LYlw40WMd07qxcQJD5M40aUxrfwqQX1g7zxYnrQ=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0 h1:Ron4zCA/yk6U7WOBXhTJcDpsUBG9npumK6xw2auFltQ=
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0/go.mod h1:cSgYe11MCNYunTnRXrKiR/tHc0eoKjICUuWpNZoVCOo=
github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
github.com/ProtonMail/go-crypto v1.1.5 h1:eoAQfK2dwL+tFSFpr7TbOaPNUbPiJj4fLYwwGE1FQO4=
github.com/ProtonMail/go-crypto v1.1.5/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
github.com/STARRY-S/zip v0.2.1 h1:pWBd4tuSGm3wtpoqRZZ2EAwOmcHK6XFf7bU9qcJXyFg=
github.com/STARRY-S/zip v0.2.1/go.mod h1:xNvshLODWtC4EJ702g7cTYn13G53o1+X9BWnPFpcWV4=
github.com/TheZeroSlave/zapsentry v1.23.0 h1:TKyzfEL7LRlRr+7AvkukVLZ+jZPC++ebCUv7ZJHl1AU=
github.com/TheZeroSlave/zapsentry v1.23.0/go.mod h1:3DRFLu4gIpnCTD4V9HMCBSaqYP8gYU7mZickrs2/rIY=
github.com/adrg/strutil v0.3.1 h1:OLvSS7CSJO8lBii4YmBt8jiK9QOtB9CzCzwl4Ic/Fz4=
github.com/adrg/strutil v0.3.1/go.mod h1:8h90y18QLrs11IBffcGX3NW/GFBXCMcNg4M7H6MspPA=
github.com/alecthomas/assert/v2 v2.7.0 h1:QtqSACNS3tF7oasA8CU6A6sXZSBDqnm7RfpLl9bZqbE=
github.com/alecthomas/assert/v2 v2.7.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
github.com/alecthomas/chroma/v2 v2.14.0 h1:R3+wzpnUArGcQz7fCETQBzO5n9IMNi13iIs46aU4V9E=
github.com/alecthomas/chroma/v2 v2.14.0/go.mod h1:QolEbTfmUHIMVpBqxeDnNBj2uoeI4EbYP4i6n68SG4I=
github.com/alecthomas/kingpin/v2 v2.4.0 h1:f48lwail6p8zpO1bC4TxtqACaGqHYA22qkHjHpqDjYY=
github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE=
github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc=
github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc=
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE=
github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA=
github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA=
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
github.com/avast/apkparser v0.0.0-20250626104540-d53391f4d69d h1:PGSn2pnK/u5ZBompy83R6Wo4BqLYp3dX43QWDoPv7TA=
github.com/avast/apkparser v0.0.0-20250626104540-d53391f4d69d/go.mod h1:3F9A8btIerUcuy7Fmno+g/nIk4ELKJ6NCs2/KK1bvLs=
github.com/aws/aws-sdk-go-v2 v1.39.0 h1:xm5WV/2L4emMRmMjHFykqiA4M/ra0DJVSWUkDyBjbg4=
github.com/aws/aws-sdk-go-v2 v1.39.0/go.mod h1:sDioUELIUO9Znk23YVmIk86/9DOpkbyyVb1i/gUNFXY=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.1 h1:i8p8P4diljCr60PpJp6qZXNlgX4m2yQFpYk+9ZT+J4E=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.1/go.mod h1:ddqbooRZYNoJ2dsTwOty16rM+/Aqmk/GOXrK8cg7V00=
github.com/aws/aws-sdk-go-v2/config v1.31.7 h1:zS1O6hr6t0nZdBCMFc/c9OyZFyLhXhf/B2IZ9Y0lRQE=
github.com/aws/aws-sdk-go-v2/config v1.31.7/go.mod h1:GpHmi1PQDdL5pP4JaB00pU0ek4EXVcYH7IkjkUadQmM=
github.com/aws/aws-sdk-go-v2/credentials v1.18.11 h1:1Fnb+7Dk96/VYx/uYfzk5sU2V0b0y2RWZROiMZCN/Io=
github.com/aws/aws-sdk-go-v2/credentials v1.18.11/go.mod h1:iuvn9v10dkxU4sDgtTXGWY0MrtkEcmkUmjv4clxhuTc=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.7 h1:Is2tPmieqGS2edBnmOJIbdvOA6Op+rRpaYR60iBAwXM=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.7/go.mod h1:F1i5V5421EGci570yABvpIXgRIBPb5JM+lSkHF6Dq5w=
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.19.5 h1:fSuJX/VBJKufwJG/szWgUdRJVyRiEQDDXNh/6NPrTBg=
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.19.5/go.mod h1:LvN0noQuST+3Su55Wl++BkITpptnfN9g6Ohkv4zs9To=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.7 h1:UCxq0X9O3xrlENdKf1r9eRJoKz/b0AfGkpp3a7FPlhg=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.7/go.mod h1:rHRoJUNUASj5Z/0eqI4w32vKvC7atoWR0jC+IkmVH8k=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.7 h1:Y6DTZUn7ZUC4th9FMBbo8LVE+1fyq3ofw+tRwkUd3PY=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.7/go.mod h1:x3XE6vMnU9QvHN/Wrx2s44kwzV2o2g5x/siw4ZUJ9g8=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.7 h1:BszAktdUo2xlzmYHjWMq70DqJ7cROM8iBd3f6hrpuMQ=
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.7/go.mod h1:XJ1yHki/P7ZPuG4fd3f0Pg/dSGA2cTQBCLw82MH2H48=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1 h1:oegbebPEMA/1Jny7kvwejowCaHz1FWZAQ94WXFNCyTM=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.1/go.mod h1:kemo5Myr9ac0U9JfSjMo9yHLtw+pECEHsFtJ9tqCEI8=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.8.7 h1:zmZ8qvtE9chfhBPuKB2aQFxW5F/rpwXUgmcVCgQzqRw=
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.8.7/go.mod h1:vVYfbpd2l+pKqlSIDIOgouxNsGu5il9uDp0ooWb0jys=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.7 h1:mLgc5QIgOy26qyh5bvW+nDoAppxgn3J2WV3m9ewq7+8=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.7/go.mod h1:wXb/eQnqt8mDQIQTTmcw58B5mYGxzLGZGK8PWNFZ0BA=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.7 h1:u3VbDKUCWarWiU+aIUK4gjTr/wQFXV17y3hgNno9fcA=
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.7/go.mod h1:/OuMQwhSyRapYxq6ZNpPer8juGNrB4P5Oz8bZ2cgjQE=
github.com/aws/aws-sdk-go-v2/service/s3 v1.88.0 h1:k5JXPr+2SrPDwM3PdygZUenn0lVPLa3KOs7cCYqinFs=
github.com/aws/aws-sdk-go-v2/service/s3 v1.88.0/go.mod h1:xajPTguLoeQMAOE44AAP2RQoUhF8ey1g5IFHARv71po=
github.com/aws/aws-sdk-go-v2/service/sns v1.38.2 h1:Djc2m7mTPuizL1iMxJfMc209PDy2AqiN1AXrtq/rBdY=
github.com/aws/aws-sdk-go-v2/service/sns v1.38.2/go.mod h1:kHMCS+JDWKuKSDP9J/v3dlV2S9zNBKbXzaLy/kHSdEE=
github.com/aws/aws-sdk-go-v2/service/sso v1.29.2 h1:rcoTaYOhGE/zfxE1uR6X5fvj+uKkqeCNRE0rBbiQM34=
github.com/aws/aws-sdk-go-v2/service/sso v1.29.2/go.mod h1:Ql6jE9kyyWI5JHn+61UT/Y5Z0oyVJGmgmJbZD5g4unY=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.3 h1:BSIfeFtU9tlSt8vEYS7KzurMoAuYzYPWhcZiMtxVf2M=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.34.3/go.mod h1:XclEty74bsGBCr1s0VSaA11hQ4ZidK4viWK7rRfO88I=
github.com/aws/aws-sdk-go-v2/service/sts v1.38.3 h1:yEiZ0ztgji2GsCb/6uQSITXcGdtmWMfLRys0jJFiUkc=
github.com/aws/aws-sdk-go-v2/service/sts v1.38.3/go.mod h1:Z+Gd23v97pX9zK97+tX4ppAgqCt3Z2dIXB02CtBncK8=
github.com/aws/smithy-go v1.23.0 h1:8n6I3gXzWJB2DxBDnfxgBaSX6oe0d/t10qGz7OKqMCE=
github.com/aws/smithy-go v1.23.0/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI=
github.com/aymanbagabas/go-osc52 v1.2.1 h1:q2sWUyDcozPLcLabEMd+a+7Ea2DitxZVN9hTxab9L4E=
github.com/aymanbagabas/go-osc52 v1.2.1/go.mod h1:zT8H+Rk4VSabYN90pWyugflM3ZhpTZNC7cASDfUCdT4=
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
github.com/aymanbagabas/go-udiff v0.2.0 h1:TK0fH4MteXUDspT88n8CKzvK0X9O2xu9yQjWpi6yML8=
github.com/aymanbagabas/go-udiff v0.2.0/go.mod h1:RE4Ex0qsGkTAJoQdQQCA0uG+nAzJO/pI/QwceO5fgrA=
github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bill-rich/go-syslog v0.0.0-20220413021637-49edb52a574c h1:tSME5FDS02qQll3JYodI6RZR/g4EKOHApGv1wMZT+Z0=
github.com/bill-rich/go-syslog v0.0.0-20220413021637-49edb52a574c/go.mod h1:+sCc6hztur+oZCLOsNk6wCCy+GLrnSNHSRmTnnL+8iQ=
github.com/bodgit/plumbing v1.3.0 h1:pf9Itz1JOQgn7vEOE7v7nlEfBykYqvUYioC61TwWCFU=
github.com/bodgit/plumbing v1.3.0/go.mod h1:JOTb4XiRu5xfnmdnDJo6GmSbSbtSyufrsyZFByMtKEs=
github.com/bodgit/sevenzip v1.6.0 h1:a4R0Wu6/P1o1pP/3VV++aEOcyeBxeO/xE2Y9NSTrr6A=
github.com/bodgit/sevenzip v1.6.0/go.mod h1:zOBh9nJUof7tcrlqJFv1koWRrhz3LbDbUNngkuZxLMc=
github.com/bodgit/windows v1.0.1 h1:tF7K6KOluPYygXa3Z2594zxlkbKPAOvqr97etrGNIz4=
github.com/bodgit/windows v1.0.1/go.mod h1:a6JLwrB4KrTR5hBpp8FI9/9W9jJfeQ2h4XDXU74ZCdM=
github.com/bradleyfalzon/ghinstallation/v2 v2.16.0 h1:B91r9bHtXp/+XRgS5aZm6ZzTdz3ahgJYmkt4xZkgDz8=
github.com/bradleyfalzon/ghinstallation/v2 v2.16.0/go.mod h1:OeVe5ggFzoBnmgitZe/A+BqGOnv1DvU/0uiLQi1wutM=
github.com/brianvoe/gofakeit/v7 v7.6.0 h1:M3RUb5CuS2IZmF/cP+O+NdLxJEuDAZxNQBwPbbqR6h4=
github.com/brianvoe/gofakeit/v7 v7.6.0/go.mod h1:QXuPeBw164PJCzCUZVmgpgHJ3Llj49jSLVkKPMtxtxA=
github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM=
github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/charmbracelet/bubbles v0.18.0 h1:PYv1A036luoBGroX6VWjQIE9Syf2Wby2oOl/39KLfy0=
github.com/charmbracelet/bubbles v0.18.0/go.mod h1:08qhZhtIwzgrtBjAcJnij1t1H0ZRjwHyGsy6AL11PSw=
github.com/charmbracelet/bubbletea v1.3.6 h1:VkHIxPJQeDt0aFJIsVxw8BQdh/F/L2KKZGsK6et5taU=
github.com/charmbracelet/bubbletea v1.3.6/go.mod h1:oQD9VCRQFF8KplacJLo28/jofOI2ToOfGYeFgBBxHOc=
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc h1:4pZI35227imm7yK2bGPcfpFEmuY1gc2YSTShr4iJBfs=
github.com/charmbracelet/colorprofile v0.2.3-0.20250311203215-f60798e515dc/go.mod h1:X4/0JoqgTIPSFcRA/P6INZzIuyqdFY5rm8tb41s9okk=
github.com/charmbracelet/glamour v0.10.0 h1:MtZvfwsYCx8jEPFJm3rIBFIMZUfUJ765oX8V6kXldcY=
github.com/charmbracelet/glamour v0.10.0/go.mod h1:f+uf+I/ChNmqo087elLnVdCiVgjSKWuXa/l6NU2ndYk=
github.com/charmbracelet/lipgloss v1.1.1-0.20250404203927-76690c660834 h1:ZR7e0ro+SZZiIZD7msJyA+NjkCNNavuiPBLgerbOziE=
github.com/charmbracelet/lipgloss v1.1.1-0.20250404203927-76690c660834/go.mod h1:aKC/t2arECF6rNOnaKaVU6y4t4ZeHQzqfxedE/VkVhA=
github.com/charmbracelet/x/ansi v0.9.3 h1:BXt5DHS/MKF+LjuK4huWrC6NCvHtexww7dMayh6GXd0=
github.com/charmbracelet/x/ansi v0.9.3/go.mod h1:3RQDQ6lDnROptfpWuUVIUG64bD2g2BgntdxH0Ya5TeE=
github.com/charmbracelet/x/cellbuf v0.0.13 h1:/KBBKHuVRbq1lYx5BzEHBAFBP8VcQzJejZ/IA3iR28k=
github.com/charmbracelet/x/cellbuf v0.0.13/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs=
github.com/charmbracelet/x/exp/golden v0.0.0-20240806155701-69247e0abc2a h1:G99klV19u0QnhiizODirwVksQB91TJKV/UaTnACcG30=
github.com/charmbracelet/x/exp/golden v0.0.0-20240806155701-69247e0abc2a/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U=
github.com/charmbracelet/x/exp/slice v0.0.0-20250327172914-2fdc97757edf h1:rLG0Yb6MQSDKdB52aGX55JT1oi0P0Kuaj7wi1bLUpnI=
github.com/charmbracelet/x/exp/slice v0.0.0-20250327172914-2fdc97757edf/go.mod h1:B3UgsnsBZS/eX42BlaNiJkD1pPOUa+oF1IYC6Yd2CEU=
github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
github.com/chengxilo/virtualterm v1.0.4 h1:Z6IpERbRVlfB8WkOmtbHiDbBANU7cimRIof7mk9/PwM=
github.com/chengxilo/virtualterm v1.0.4/go.mod h1:DyxxBZz/x1iqJjFxTFcr6/x+jSpqN0iwWCOK1q10rlY=
github.com/chromedp/cdproto v0.0.0-20230802225258-3cf4e6d46a89/go.mod h1:GKljq0VrfU4D5yc+2qA6OVr8pmO/MBbPEWqWQ/oqGEs=
github.com/chromedp/chromedp v0.9.2/go.mod h1:LkSXJKONWTCHAfQasKFUZI+mxqS4tZqhmtGzzhLsnLs=
github.com/chromedp/sysutil v1.0.0/go.mod h1:kgWmDdq8fTzXYcKIBqIYvRRTnYb9aNS9moAV0xufSww=
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ=
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk=
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cloudflare/circl v1.6.1 h1:zqIqSPIndyBh1bjLVVDHMPpVKqp8Su/V+6MeDzzQBQ0=
github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f h1:Y8xYupdHxryycyPlc9Y+bSQAYZnetRJ70VMVKm5CKI0=
github.com/cncf/xds/go v0.0.0-20251022180443-0feb69152e9f/go.mod h1:HlzOvOjVBOfTGSRXRyY0OiCS/3J1akRGQQpRO/7zyF4=
github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI=
github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M=
github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE=
github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk=
github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I=
github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo=
github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A=
github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw=
github.com/containerd/stargz-snapshotter/estargz v0.16.3 h1:7evrXtoh1mSbGj/pfRccTampEyKpjpOnS3CyiV1Ebr8=
github.com/containerd/stargz-snapshotter/estargz v0.16.3/go.mod h1:uyr4BfYfOj3G9WBVE8cOlQmXAbPN9VEQpBBeJIuOipU=
github.com/couchbase/gocb/v2 v2.11.0 h1:OVB+KlVeXlKVtziKx/LWZT7DClLsoQHQFrI4wan5Ijc=
github.com/couchbase/gocb/v2 v2.11.0/go.mod h1:Y+lODSgyVzDSaf0Sy8sIzIa0RTAw3vlZUsjY6+FUq9Y=
github.com/couchbase/gocbcore/v10 v10.8.0 h1:zDcJyYqOirFyC8T/aVvNL4N9oj6GI4qtaBuTGGWCDb4=
github.com/couchbase/gocbcore/v10 v10.8.0/go.mod h1:OWKfU9R5Nm5V3QZBtfdZl5qCfgxtxTqOgXiNr4pn9/c=
github.com/couchbase/gocbcoreps v0.1.3 h1:fILaKGCjxFIeCgAUG8FGmRDSpdrRggohOMKEgO9CUpg=
github.com/couchbase/gocbcoreps v0.1.3/go.mod h1:hBFpDNPnRno6HH5cRXExhqXYRmTsFJlFHQx7vztcXPk=
github.com/couchbase/goprotostellar v1.0.2 h1:yoPbAL9sCtcyZ5e/DcU5PRMOEFaJrF9awXYu3VPfGls=
github.com/couchbase/goprotostellar v1.0.2/go.mod h1:5/yqVnZlW2/NSbAWu1hPJCFBEwjxgpe0PFFOlRixnp4=
github.com/couchbaselabs/gocaves/client v0.0.0-20250107114554-f96479220ae8 h1:MQfvw4BiLTuyR69FuA5Kex+tXUeLkH+/ucJfVL1/hkM=
github.com/couchbaselabs/gocaves/client v0.0.0-20250107114554-f96479220ae8/go.mod h1:AVekAZwIY2stsJOMWLAS/0uA/+qdp7pjO8EHnl61QkY=
github.com/couchbaselabs/gocbconnstr/v2 v2.0.0-20240607131231-fb385523de28 h1:lhGOw8rNG6RAadmmaJAF3PJ7MNt7rFuWG7BHCYMgnGE=
github.com/couchbaselabs/gocbconnstr/v2 v2.0.0-20240607131231-fb385523de28/go.mod h1:o7T431UOfFVHDNvMBUmUxpHnhivwv7BziUao/nMl81E=
github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA=
github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc=
github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY=
github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
github.com/crewjam/rfc5424 v0.1.0 h1:MSeXJm22oKovLzWj44AHwaItjIMUMugYGkEzfa831H8=
github.com/crewjam/rfc5424 v0.1.0/go.mod h1:RCi9M3xHVOeerf6ULZzqv2xOGRO/zYaVUeRyPnBW3gQ=
github.com/csnewman/dextk v0.3.0 h1:gigNZlZRNfCuARV7depunRlafEAzGhyvgBQo1FT3/0M=
github.com/csnewman/dextk v0.3.0/go.mod h1:FcDoI3258ea0KPQogyv4iazQRGcLFNOW+I4pHBUfNO0=
github.com/cyphar/filepath-securejoin v0.3.6 h1:4d9N5ykBnSp5Xn2JkhocYDkOpURL/18CYMpo6xB9uWM=
github.com/cyphar/filepath-securejoin v0.3.6/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 h1:NMZiJj8QnKe1LgsbDayM4UoHwbvwDRwnI3hwNaAHRnc=
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0/go.mod h1:ZXNYxsqcloTdSy/rNShjYzMhyjf0LaoftYK0p+A3h40=
github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5
Download .txt
gitextract_ieqdewfm/

├── .captain/
│   └── config.yaml
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── community_note.md
│   ├── renovate.json
│   └── workflows/
│       ├── README.md
│       ├── TESTING.md
│       ├── codeql-analysis.yml
│       ├── detector-tests.yml
│       ├── lint.yml
│       ├── performance.yml
│       ├── release-guard.yml
│       ├── release.yml
│       ├── secrets.yml
│       ├── smoke.yml
│       └── test.yml
├── .gitignore
├── .goreleaser.yml
├── .pre-commit-config.yaml
├── .pre-commit-hooks.yaml
├── CODEOWNERS
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Dockerfile
├── Dockerfile.goreleaser
├── LICENSE
├── Makefile
├── PreCommit.md
├── README.md
├── SECURITY.md
├── action.yml
├── docs/
│   ├── concurrency.md
│   ├── iterative_decoding_performance.md
│   └── process_flow.md
├── entrypoint.sh
├── examples/
│   ├── README.md
│   ├── generic.yml
│   └── generic_with_filters.yml
├── go.mod
├── go.sum
├── hack/
│   ├── Dockerfile.protos
│   ├── bench/
│   │   ├── plot.gp
│   │   ├── plot.sh
│   │   ├── plot.txt
│   │   └── versions.sh
│   ├── docs/
│   │   ├── Adding_Detectors_Internal.md
│   │   └── Adding_Detectors_external.md
│   ├── generate/
│   │   ├── generate.go
│   │   └── test.sh
│   ├── semgrep-rules/
│   │   └── detectors.yaml
│   └── snifftest/
│       ├── README.md
│       ├── main.go
│       └── snifftest.sh
├── main.go
├── pkg/
│   ├── analyzer/
│   │   ├── README.md
│   │   ├── analyzers/
│   │   │   ├── airbrake/
│   │   │   │   ├── airbrake.go
│   │   │   │   └── scopes.go
│   │   │   ├── airtable/
│   │   │   │   ├── airtableoauth/
│   │   │   │   │   ├── airtable.go
│   │   │   │   │   ├── airtable_test.go
│   │   │   │   │   └── expected_output.json
│   │   │   │   ├── airtablepat/
│   │   │   │   │   ├── airtable.go
│   │   │   │   │   ├── airtable_test.go
│   │   │   │   │   ├── expected_output.json
│   │   │   │   │   └── requests.go
│   │   │   │   └── common/
│   │   │   │       ├── common.go
│   │   │   │       ├── endpoints.go
│   │   │   │       ├── models.go
│   │   │   │       ├── permissions.go
│   │   │   │       ├── permissions.yaml
│   │   │   │       └── scopes.go
│   │   │   ├── analyzers.go
│   │   │   ├── anthropic/
│   │   │   │   ├── anthropic.go
│   │   │   │   ├── anthropic_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── requests.go
│   │   │   │   └── result_output.json
│   │   │   ├── asana/
│   │   │   │   ├── asana.go
│   │   │   │   ├── asana_test.go
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── permissions.go
│   │   │   │   └── permissions.yaml
│   │   │   ├── bitbucket/
│   │   │   │   ├── bitbucket.go
│   │   │   │   ├── bitbucket_test.go
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   └── scopes.go
│   │   │   ├── client.go
│   │   │   ├── client_test.go
│   │   │   ├── databricks/
│   │   │   │   ├── databricks.go
│   │   │   │   ├── databricks_test.go
│   │   │   │   ├── models.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── requests.go
│   │   │   │   └── result_output.json
│   │   │   ├── datadog/
│   │   │   │   ├── datadog.go
│   │   │   │   ├── datadog_test.go
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── expected_output_apikey.json
│   │   │   │   ├── models.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── requests.go
│   │   │   │   └── scopes.json
│   │   │   ├── digitalocean/
│   │   │   │   ├── digitalocean.go
│   │   │   │   ├── digitalocean_test.go
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   └── scopes.json
│   │   │   ├── dockerhub/
│   │   │   │   ├── dockerhub.go
│   │   │   │   ├── dockerhub_test.go
│   │   │   │   ├── helper.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── requests.go
│   │   │   │   └── result_output.json
│   │   │   ├── dropbox/
│   │   │   │   ├── dropbox.go
│   │   │   │   ├── dropbox_test.go
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── models.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   └── scopes.json
│   │   │   ├── elevenlabs/
│   │   │   │   ├── elevenlabs.go
│   │   │   │   ├── elevenlabs_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── requests.go
│   │   │   │   └── result_output.json
│   │   │   ├── fastly/
│   │   │   │   ├── fastly.go
│   │   │   │   ├── fastly_test.go
│   │   │   │   ├── models.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── requests.go
│   │   │   │   └── result_output.json
│   │   │   ├── figma/
│   │   │   │   ├── endpoints.json
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── figma.go
│   │   │   │   ├── figma_test.go
│   │   │   │   ├── models.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── requests.go
│   │   │   │   └── scopes.go
│   │   │   ├── github/
│   │   │   │   ├── classic/
│   │   │   │   │   ├── classic.yaml
│   │   │   │   │   ├── classic_permissions.go
│   │   │   │   │   └── classictoken.go
│   │   │   │   ├── common/
│   │   │   │   │   └── github.go
│   │   │   │   ├── finegrained/
│   │   │   │   │   ├── finegrained.go
│   │   │   │   │   ├── finegrained.yaml
│   │   │   │   │   ├── finegrained_permissions.go
│   │   │   │   │   └── finegrained_test.go
│   │   │   │   ├── github.go
│   │   │   │   └── github_test.go
│   │   │   ├── gitlab/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── gitlab.go
│   │   │   │   ├── gitlab_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   └── scopes.go
│   │   │   ├── groq/
│   │   │   │   ├── groq.go
│   │   │   │   ├── groq_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   └── requests.go
│   │   │   ├── huggingface/
│   │   │   │   ├── huggingface.go
│   │   │   │   ├── huggingface_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   └── scopes.go
│   │   │   ├── jira/
│   │   │   │   ├── jira.go
│   │   │   │   ├── jira_test.go
│   │   │   │   ├── models.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── requests.go
│   │   │   │   └── result_output.json
│   │   │   ├── launchdarkly/
│   │   │   │   ├── launchdarkly.go
│   │   │   │   ├── launchdarkly_test.go
│   │   │   │   ├── models.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── requests.go
│   │   │   │   ├── result_output.json
│   │   │   │   └── user.go
│   │   │   ├── mailchimp/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── mailchimp.go
│   │   │   │   ├── mailchimp_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   └── permissions.yaml
│   │   │   ├── mailgun/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── mailgun.go
│   │   │   │   ├── mailgun_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   └── requests.go
│   │   │   ├── monday/
│   │   │   │   ├── monday.go
│   │   │   │   ├── monday_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── query.go
│   │   │   │   ├── query.graphql
│   │   │   │   └── result_output.json
│   │   │   ├── mux/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── models.go
│   │   │   │   ├── mux.go
│   │   │   │   ├── mux_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── requests.go
│   │   │   │   ├── resources.go
│   │   │   │   └── tests.json
│   │   │   ├── mysql/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── mysql.go
│   │   │   │   ├── mysql_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   └── scopes.go
│   │   │   ├── netlify/
│   │   │   │   ├── models.go
│   │   │   │   ├── netlify.go
│   │   │   │   ├── netlify_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── requests.go
│   │   │   │   └── result_output.json
│   │   │   ├── ngrok/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── models.go
│   │   │   │   ├── ngrok.go
│   │   │   │   ├── ngrok_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── requests.go
│   │   │   │   └── resources.go
│   │   │   ├── notion/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── notion.go
│   │   │   │   ├── notion_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   └── scopes.json
│   │   │   ├── openai/
│   │   │   │   ├── openai.go
│   │   │   │   ├── openai_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── result_output.json
│   │   │   │   └── scopes.go
│   │   │   ├── opsgenie/
│   │   │   │   ├── opsgenie.go
│   │   │   │   ├── opsgenie_test.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   └── scopes.json
│   │   │   ├── plaid/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── models.go
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── plaid.go
│   │   │   │   ├── plaid_test.go
│   │   │   │   └── products.go
│   │   │   ├── planetscale/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── planetscale.go
│   │   │   │   ├── planetscale_test.go
│   │   │   │   └── scopes.json
│   │   │   ├── postgres/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── postgres.go
│   │   │   │   └── postgres_test.go
│   │   │   ├── posthog/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── posthog.go
│   │   │   │   ├── posthog_test.go
│   │   │   │   └── scopes.json
│   │   │   ├── postman/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── postman.go
│   │   │   │   ├── postman_test.go
│   │   │   │   └── scopes.go
│   │   │   ├── privatekey/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── privatekey.go
│   │   │   │   └── privatekey_test.go
│   │   │   ├── sendgrid/
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── result_output.json
│   │   │   │   ├── scopes.go
│   │   │   │   ├── sendgrid.go
│   │   │   │   └── sendgrid_test.go
│   │   │   ├── shopify/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── scopes.json
│   │   │   │   ├── shopify.go
│   │   │   │   └── shopify_test.go
│   │   │   ├── slack/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── scopes.go
│   │   │   │   ├── slack.go
│   │   │   │   └── slack_test.go
│   │   │   ├── sourcegraph/
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── sourcegraph.go
│   │   │   │   └── sourcegraph_test.go
│   │   │   ├── square/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── scopes.go
│   │   │   │   ├── square.go
│   │   │   │   └── square_test.go
│   │   │   ├── stripe/
│   │   │   │   ├── expected_output.json
│   │   │   │   ├── permissions.go
│   │   │   │   ├── permissions.yaml
│   │   │   │   ├── restricted.yaml
│   │   │   │   ├── stripe.go
│   │   │   │   └── stripe_test.go
│   │   │   └── twilio/
│   │   │       ├── permissions.go
│   │   │       ├── permissions.yaml
│   │   │       ├── twilio.go
│   │   │       └── twilio_test.go
│   │   ├── cli.go
│   │   ├── config/
│   │   │   └── config.go
│   │   └── generate_permissions/
│   │       └── generate_permissions.go
│   ├── buffers/
│   │   ├── buffer/
│   │   │   ├── buffer.go
│   │   │   ├── buffer_test.go
│   │   │   └── metrics.go
│   │   └── pool/
│   │       ├── metrics.go
│   │       ├── pool.go
│   │       └── pool_test.go
│   ├── cache/
│   │   ├── cache.go
│   │   ├── decorator.go
│   │   ├── decorator_test.go
│   │   ├── lru/
│   │   │   ├── lru.go
│   │   │   └── lru_test.go
│   │   ├── metrics.go
│   │   └── simple/
│   │       ├── simple.go
│   │       └── simple_test.go
│   ├── channelmetrics/
│   │   ├── metrics_collector/
│   │   │   └── prometheus/
│   │   │       └── collector.go
│   │   ├── noopcollector.go
│   │   ├── observablechan.go
│   │   └── observablechan_test.go
│   ├── cleantemp/
│   │   ├── cleantemp.go
│   │   └── cleantemp_test.go
│   ├── common/
│   │   ├── context.go
│   │   ├── export_error.go
│   │   ├── filter.go
│   │   ├── filter_test.go
│   │   ├── glob/
│   │   │   ├── glob.go
│   │   │   └── glob_test.go
│   │   ├── http.go
│   │   ├── http_metrics.go
│   │   ├── http_test.go
│   │   ├── metrics.go
│   │   ├── patterns.go
│   │   ├── patterns_test.go
│   │   ├── recover.go
│   │   ├── secrets.go
│   │   ├── utils.go
│   │   ├── utils_test.go
│   │   ├── vars.go
│   │   └── vars_test.go
│   ├── config/
│   │   ├── config.go
│   │   ├── detectors.go
│   │   └── detectors_test.go
│   ├── context/
│   │   ├── context.go
│   │   └── context_test.go
│   ├── custom_detectors/
│   │   ├── CUSTOM_DETECTORS.md
│   │   ├── custom_detectors.go
│   │   ├── custom_detectors_test.go
│   │   ├── regex_varstring.go
│   │   ├── regex_varstring_test.go
│   │   ├── validation.go
│   │   └── validation_test.go
│   ├── decoders/
│   │   ├── base64.go
│   │   ├── base64_test.go
│   │   ├── decoders.go
│   │   ├── escaped_unicode.go
│   │   ├── escaped_unicode_bench_test.go
│   │   ├── escaped_unicode_test.go
│   │   ├── utf16.go
│   │   ├── utf16_test.go
│   │   ├── utf8.go
│   │   └── utf8_test.go
│   ├── detectors/
│   │   ├── abstract/
│   │   │   ├── abstract.go
│   │   │   ├── abstract_integration_test.go
│   │   │   └── abstract_test.go
│   │   ├── abuseipdb/
│   │   │   ├── abuseipdb.go
│   │   │   ├── abuseipdb_integration_test.go
│   │   │   └── abuseipdb_test.go
│   │   ├── abyssale/
│   │   │   ├── abyssale.go
│   │   │   ├── abyssale_integration_test.go
│   │   │   └── abyssale_test.go
│   │   ├── account_filter.go
│   │   ├── account_filter_test.go
│   │   ├── accuweather/
│   │   │   ├── v1/
│   │   │   │   ├── accuweather.go
│   │   │   │   ├── accuweather_integration_test.go
│   │   │   │   └── accuweather_test.go
│   │   │   └── v2/
│   │   │       ├── accuweather.go
│   │   │       ├── accuweather_integration_test.go
│   │   │       └── accuweather_test.go
│   │   ├── adafruitio/
│   │   │   ├── adafruitio.go
│   │   │   ├── adafruitio_integration_test.go
│   │   │   └── adafruitio_test.go
│   │   ├── adobeio/
│   │   │   ├── adobeio.go
│   │   │   ├── adobeio_integration_test.go
│   │   │   └── adobeio_test.go
│   │   ├── adzuna/
│   │   │   ├── adzuna.go
│   │   │   ├── adzuna_integration_test.go
│   │   │   └── adzuna_test.go
│   │   ├── aeroworkflow/
│   │   │   ├── aeroworkflow.go
│   │   │   ├── aeroworkflow_integration_test.go
│   │   │   └── aeroworkflow_test.go
│   │   ├── agora/
│   │   │   ├── agora.go
│   │   │   ├── agora_integration_test.go
│   │   │   └── agora_test.go
│   │   ├── aha/
│   │   │   ├── aha.go
│   │   │   ├── aha_integration_test.go
│   │   │   └── aha_test.go
│   │   ├── airbrakeprojectkey/
│   │   │   ├── airbrakeprojectkey.go
│   │   │   ├── airbrakeprojectkey_integration_test.go
│   │   │   └── airbrakeprojectkey_test.go
│   │   ├── airbrakeuserkey/
│   │   │   ├── airbrakeuserkey.go
│   │   │   ├── airbrakeuserkey_integration_test.go
│   │   │   └── airbrakeuserkey_test.go
│   │   ├── airship/
│   │   │   ├── airship.go
│   │   │   ├── airship_integration_test.go
│   │   │   └── airship_test.go
│   │   ├── airtableoauth/
│   │   │   ├── airtableoauth.go
│   │   │   ├── airtableoauth_integration_test.go
│   │   │   └── airtableoauth_test.go
│   │   ├── airtablepersonalaccesstoken/
│   │   │   ├── airtablepersonalaccesstoken.go
│   │   │   ├── airtablepersonalaccesstoken_integration_test.go
│   │   │   └── airtablepersonalaccesstoken_test.go
│   │   ├── airvisual/
│   │   │   ├── airvisual.go
│   │   │   ├── airvisual_integration_test.go
│   │   │   └── airvisual_test.go
│   │   ├── aiven/
│   │   │   ├── aiven.go
│   │   │   ├── aiven_integration_test.go
│   │   │   └── aiven_test.go
│   │   ├── alchemy/
│   │   │   ├── alchemy.go
│   │   │   ├── alchemy_integration_test.go
│   │   │   └── alchemy_test.go
│   │   ├── alconost/
│   │   │   ├── alconost.go
│   │   │   ├── alconost_integration_test.go
│   │   │   └── alconost_test.go
│   │   ├── alegra/
│   │   │   ├── alegra.go
│   │   │   ├── alegra_integration_test.go
│   │   │   └── alegra_test.go
│   │   ├── aletheiaapi/
│   │   │   ├── aletheiaapi.go
│   │   │   ├── aletheiaapi_integration_test.go
│   │   │   └── aletheiaapi_test.go
│   │   ├── algoliaadminkey/
│   │   │   ├── algoliaadminkey.go
│   │   │   ├── algoliaadminkey_integration_test.go
│   │   │   └── algoliaadminkey_test.go
│   │   ├── alibaba/
│   │   │   ├── alibaba.go
│   │   │   ├── alibaba_integration_test.go
│   │   │   └── alibaba_test.go
│   │   ├── alienvault/
│   │   │   ├── alienvault.go
│   │   │   ├── alienvault_integration_test.go
│   │   │   └── alienvault_test.go
│   │   ├── allsports/
│   │   │   ├── allsports.go
│   │   │   ├── allsports_integration_test.go
│   │   │   └── allsports_test.go
│   │   ├── amadeus/
│   │   │   ├── amadeus.go
│   │   │   ├── amadeus_integration_test.go
│   │   │   └── amadeus_test.go
│   │   ├── ambee/
│   │   │   ├── ambee.go
│   │   │   ├── ambee_integration_test.go
│   │   │   └── ambee_test.go
│   │   ├── amplitudeapikey/
│   │   │   ├── amplitudeapikey.go
│   │   │   ├── amplitudeapikey_integration_test.go
│   │   │   └── amplitudeapikey_test.go
│   │   ├── anthropic/
│   │   │   ├── anthropic.go
│   │   │   ├── anthropic_integration_test.go
│   │   │   └── anthropic_test.go
│   │   ├── anypoint/
│   │   │   ├── anypoint.go
│   │   │   ├── anypoint_integration_test.go
│   │   │   └── anypoint_test.go
│   │   ├── anypointoauth2/
│   │   │   ├── anypointoauth2.go
│   │   │   ├── anypointoauth2_integration_test.go
│   │   │   └── anypointoauth2_test.go
│   │   ├── apacta/
│   │   │   ├── apacta.go
│   │   │   ├── apacta_integration_test.go
│   │   │   └── apacta_test.go
│   │   ├── api2cart/
│   │   │   ├── api2cart.go
│   │   │   ├── api2cart_integration_test.go
│   │   │   └── api2cart_test.go
│   │   ├── apideck/
│   │   │   ├── apideck.go
│   │   │   ├── apideck_integration_test.go
│   │   │   └── apideck_test.go
│   │   ├── apiflash/
│   │   │   ├── apiflash.go
│   │   │   ├── apiflash_integration_test.go
│   │   │   └── apiflash_test.go
│   │   ├── apifonica/
│   │   │   ├── apifonica.go
│   │   │   ├── apifonica_integration_test.go
│   │   │   └── apifonica_test.go
│   │   ├── apify/
│   │   │   ├── apify.go
│   │   │   ├── apify_integration_test.go
│   │   │   └── apify_test.go
│   │   ├── apilayer/
│   │   │   ├── apilayer.go
│   │   │   ├── apilayer_integration_test.go
│   │   │   └── apilayer_test.go
│   │   ├── apimatic/
│   │   │   ├── apimatic.go
│   │   │   ├── apimatic_integration_test.go
│   │   │   └── apimatic_test.go
│   │   ├── apimetrics/
│   │   │   ├── apimetrics.go
│   │   │   ├── apimetrics_integration_test.go
│   │   │   └── apimetrics_test.go
│   │   ├── apitemplate/
│   │   │   ├── apitemplate.go
│   │   │   ├── apitemplate_integration_test.go
│   │   │   └── apitemplate_test.go
│   │   ├── apollo/
│   │   │   ├── apollo.go
│   │   │   ├── apollo_integration_test.go
│   │   │   └── apollo_test.go
│   │   ├── appcues/
│   │   │   ├── appcues.go
│   │   │   ├── appcues_integration_test.go
│   │   │   └── appcues_test.go
│   │   ├── appfollow/
│   │   │   ├── appfollow.go
│   │   │   ├── appfollow_integration_test.go
│   │   │   └── appfollow_test.go
│   │   ├── appointedd/
│   │   │   ├── appointedd.go
│   │   │   ├── appointedd_integration_test.go
│   │   │   └── appointedd_test.go
│   │   ├── appoptics/
│   │   │   ├── appoptics.go
│   │   │   ├── appoptics_integration_test.go
│   │   │   └── appoptics_test.go
│   │   ├── appsynergy/
│   │   │   ├── appsynergy.go
│   │   │   ├── appsynergy_integration_test.go
│   │   │   └── appsynergy_test.go
│   │   ├── apptivo/
│   │   │   ├── apptivo.go
│   │   │   ├── apptivo_integration_test.go
│   │   │   └── apptivo_test.go
│   │   ├── artifactory/
│   │   │   ├── artifactory.go
│   │   │   ├── artifactory_integration_test.go
│   │   │   └── artifactory_test.go
│   │   ├── artifactoryreferencetoken/
│   │   │   ├── artifactoryreferencetoken.go
│   │   │   ├── artifactoryreferencetoken_integration_test.go
│   │   │   └── artifactoryreferencetoken_test.go
│   │   ├── artsy/
│   │   │   ├── artsy.go
│   │   │   ├── artsy_integration_test.go
│   │   │   └── artsy_test.go
│   │   ├── asanaoauth/
│   │   │   ├── asanaoauth.go
│   │   │   ├── asanaoauth_integration_test.go
│   │   │   └── asanaoauth_test.go
│   │   ├── asanapersonalaccesstoken/
│   │   │   ├── asanapersonalaccesstoken.go
│   │   │   ├── asanapersonalaccesstoken_integration_test.go
│   │   │   └── asanapersonalaccesstoken_test.go
│   │   ├── assemblyai/
│   │   │   ├── assemblyai.go
│   │   │   ├── assemblyai_integration_test.go
│   │   │   └── assemblyai_test.go
│   │   ├── atera/
│   │   │   ├── atera.go
│   │   │   ├── atera_integration_test.go
│   │   │   └── atera_test.go
│   │   ├── atlassian/
│   │   │   ├── v1/
│   │   │   │   ├── atlassian.go
│   │   │   │   ├── atlassian_integration_test.go
│   │   │   │   └── atlassian_test.go
│   │   │   └── v2/
│   │   │       ├── atlassian.go
│   │   │       ├── atlassian_integration_test.go
│   │   │       └── atlassian_test.go
│   │   ├── audd/
│   │   │   ├── audd.go
│   │   │   ├── audd_integration_test.go
│   │   │   └── audd_test.go
│   │   ├── auth0managementapitoken/
│   │   │   ├── auth0managementapitoken.go
│   │   │   ├── auth0managementapitoken_integration_test.go
│   │   │   └── auth0managementapitoken_test.go
│   │   ├── auth0oauth/
│   │   │   ├── auth0oauth.go
│   │   │   ├── auth0oauth_integeration_test.go
│   │   │   └── auth0oauth_test.go
│   │   ├── autodesk/
│   │   │   ├── autodesk.go
│   │   │   ├── autodesk_integration_test.go
│   │   │   └── autodesk_test.go
│   │   ├── autoklose/
│   │   │   ├── autoklose.go
│   │   │   ├── autoklose_integration_test.go
│   │   │   └── autoklose_test.go
│   │   ├── autopilot/
│   │   │   ├── autopilot.go
│   │   │   ├── autopilot_integration_test.go
│   │   │   └── autopilot_test.go
│   │   ├── avazapersonalaccesstoken/
│   │   │   ├── avazapersonalaccesstoken.go
│   │   │   ├── avazapersonalaccesstoken_integration_test.go
│   │   │   └── avazapersonalaccesstoken_test.go
│   │   ├── aviationstack/
│   │   │   ├── aviationstack.go
│   │   │   ├── aviationstack_integration_test.go
│   │   │   └── aviationstack_test.go
│   │   ├── aws/
│   │   │   ├── access_keys/
│   │   │   │   ├── accesskey.go
│   │   │   │   ├── accesskey_integration_test.go
│   │   │   │   ├── accesskey_test.go
│   │   │   │   └── canary.go
│   │   │   ├── common.go
│   │   │   ├── session_keys/
│   │   │   │   ├── sessionkey.go
│   │   │   │   └── sessionkeys_test.go
│   │   │   └── utils.go
│   │   ├── axonaut/
│   │   │   ├── axonaut.go
│   │   │   ├── axonaut_integration_test.go
│   │   │   └── axonaut_test.go
│   │   ├── aylien/
│   │   │   ├── aylien.go
│   │   │   ├── aylien_integration_test.go
│   │   │   └── aylien_test.go
│   │   ├── ayrshare/
│   │   │   ├── ayrshare.go
│   │   │   ├── ayrshare_integration_test.go
│   │   │   └── ayrshare_test.go
│   │   ├── azure_batch/
│   │   │   ├── azurebatch.go
│   │   │   ├── azurebatch_integration_test.go
│   │   │   └── azurebatch_test.go
│   │   ├── azure_cosmosdb/
│   │   │   ├── azure_cosmosdb.go
│   │   │   ├── azure_cosmosdb_integration_test.go
│   │   │   ├── azure_cosmosdb_test.go
│   │   │   └── table.go
│   │   ├── azure_entra/
│   │   │   ├── common.go
│   │   │   ├── common_test.go
│   │   │   ├── refreshtoken/
│   │   │   │   ├── refreshtoken.go
│   │   │   │   ├── refreshtoken_integration_test.go
│   │   │   │   └── refreshtoken_test.go
│   │   │   └── serviceprincipal/
│   │   │       ├── sp.go
│   │   │       ├── v1/
│   │   │       │   ├── spv1.go
│   │   │       │   ├── spv1_integration_test.go
│   │   │       │   └── spv1_test.go
│   │   │       └── v2/
│   │   │           ├── spv2.go
│   │   │           ├── spv2_integration_test.go
│   │   │           └── spv2_test.go
│   │   ├── azure_openai/
│   │   │   ├── azure_openai.go
│   │   │   ├── azure_openai_integration_test.go
│   │   │   └── azure_openai_test.go
│   │   ├── azure_storage/
│   │   │   ├── storage.go
│   │   │   ├── storage_integration_test.go
│   │   │   └── storage_test.go
│   │   ├── azureapimanagement/
│   │   │   └── repositorykey/
│   │   │       ├── repositorykey.go
│   │   │       ├── repositorykey_integration_test.go
│   │   │       └── repositorykey_test.go
│   │   ├── azureapimanagementsubscriptionkey/
│   │   │   ├── azureapimanagementsubscriptionkey.go
│   │   │   ├── azureapimanagementsubscriptionkey_integration_test.go
│   │   │   └── azureapimanagementsubscriptionkey_test.go
│   │   ├── azureappconfigconnectionstring/
│   │   │   ├── azureappconfigconnectionstring.go
│   │   │   ├── azureappconfigconnectionstring_integration_test.go
│   │   │   └── azureappconfigconnectionstring_test.go
│   │   ├── azurecontainerregistry/
│   │   │   ├── azurecontainerregistry.go
│   │   │   ├── azurecontainerregistry_integration_test.go
│   │   │   └── azurecontainerregistry_test.go
│   │   ├── azuredevopspersonalaccesstoken/
│   │   │   ├── azuredevopspersonalaccesstoken.go
│   │   │   ├── azuredevopspersonalaccesstoken_integration_test.go
│   │   │   └── azuredevopspersonalaccesstoken_test.go
│   │   ├── azuredirectmanagementkey/
│   │   │   ├── azuredirectmanagementkey.go
│   │   │   ├── azuredirectmanagementkey_integration_test.go
│   │   │   └── azuredirectmanagementkey_test.go
│   │   ├── azurefunctionkey/
│   │   │   ├── azurefunctionkey.go
│   │   │   ├── azurefunctionkey_integration_test.go
│   │   │   └── azurefunctionkey_test.go
│   │   ├── azuresastoken/
│   │   │   ├── azuresastoken.go
│   │   │   ├── azuresastoken_integration_test.go
│   │   │   └── azuresastoken_test.go
│   │   ├── azuresearchadminkey/
│   │   │   ├── azuresearchadminkey.go
│   │   │   ├── azuresearchadminkey_integration_test.go
│   │   │   └── azuresearchadminkey_test.go
│   │   ├── azuresearchquerykey/
│   │   │   ├── azuresearchquerykey.go
│   │   │   ├── azuresearchquerykey_integration_test.go
│   │   │   └── azuresearchquerykey_test.go
│   │   ├── bannerbear/
│   │   │   ├── v1/
│   │   │   │   ├── bannerbear.go
│   │   │   │   ├── bannerbear_integration_test.go
│   │   │   │   └── bannerbear_test.go
│   │   │   └── v2/
│   │   │       ├── bannerbear.go
│   │   │       ├── bannerbear_integration_test.go
│   │   │       └── bannerbear_test.go
│   │   ├── baremetrics/
│   │   │   ├── baremetrics.go
│   │   │   ├── baremetrics_integration_test.go
│   │   │   └── baremetrics_test.go
│   │   ├── beamer/
│   │   │   ├── beamer.go
│   │   │   ├── beamer_integration_test.go
│   │   │   └── beamer_test.go
│   │   ├── beebole/
│   │   │   ├── beebole.go
│   │   │   ├── beebole_integration_test.go
│   │   │   └── beebole_test.go
│   │   ├── besnappy/
│   │   │   ├── besnappy.go
│   │   │   ├── besnappy_integration_test.go
│   │   │   └── besnappy_test.go
│   │   ├── besttime/
│   │   │   ├── besttime.go
│   │   │   ├── besttime_integration_test.go
│   │   │   └── besttime_test.go
│   │   ├── betterstack/
│   │   │   ├── betterstack.go
│   │   │   ├── betterstack_integration_test.go
│   │   │   └── betterstack_test.go
│   │   ├── billomat/
│   │   │   ├── billomat.go
│   │   │   ├── billomat_integration_test.go
│   │   │   └── billomat_test.go
│   │   ├── bingsubscriptionkey/
│   │   │   ├── bingsubscriptionkey.go
│   │   │   ├── bingsubscriptionkey_integration_test.go
│   │   │   └── bingsubscriptionkey_test.go
│   │   ├── bitbar/
│   │   │   ├── bitbar.go
│   │   │   ├── bitbar_integration_test.go
│   │   │   └── bitbar_test.go
│   │   ├── bitbucketapppassword/
│   │   │   ├── bitbucketapppassword.go
│   │   │   ├── bitbucketapppassword_integration_test.go
│   │   │   └── bitbucketapppassword_test.go
│   │   ├── bitcoinaverage/
│   │   │   ├── bitcoinaverage.go
│   │   │   ├── bitcoinaverage_integration_test.go
│   │   │   └── bitcoinaverage_test.go
│   │   ├── bitfinex/
│   │   │   ├── bitfinex.go
│   │   │   ├── bitfinex_integration_test.go
│   │   │   └── bitfinex_test.go
│   │   ├── bitlyaccesstoken/
│   │   │   ├── bitlyaccesstoken.go
│   │   │   ├── bitlyaccesstoken_integration_test.go
│   │   │   └── bitlyaccesstoken_test.go
│   │   ├── bitmex/
│   │   │   ├── bitmex.go
│   │   │   ├── bitmex_integration_test.go
│   │   │   └── bitmex_test.go
│   │   ├── blazemeter/
│   │   │   ├── blazemeter.go
│   │   │   ├── blazemeter_integration_test.go
│   │   │   └── blazemeter_test.go
│   │   ├── blitapp/
│   │   │   ├── blitapp.go
│   │   │   ├── blitapp_integration_test.go
│   │   │   └── blitapp_test.go
│   │   ├── blocknative/
│   │   │   ├── blocknative.go
│   │   │   ├── blocknative_integration_test.go
│   │   │   └── blocknative_test.go
│   │   ├── blogger/
│   │   │   ├── blogger.go
│   │   │   ├── blogger_integration_test.go
│   │   │   └── blogger_test.go
│   │   ├── bombbomb/
│   │   │   ├── bombbomb.go
│   │   │   ├── bombbomb_integration_test.go
│   │   │   └── bombbomb_test.go
│   │   ├── boostnote/
│   │   │   ├── boostnote.go
│   │   │   ├── boostnote_integration_test.go
│   │   │   └── boostnote_test.go
│   │   ├── borgbase/
│   │   │   ├── borgbase.go
│   │   │   ├── borgbase_integration_test.go
│   │   │   └── borgbase_test.go
│   │   ├── box/
│   │   │   ├── box.go
│   │   │   ├── box_integration_test.go
│   │   │   └── box_test.go
│   │   ├── boxoauth/
│   │   │   ├── boxoauth.go
│   │   │   ├── boxoauth_integration_test.go
│   │   │   └── boxoauth_test.go
│   │   ├── braintreepayments/
│   │   │   ├── braintreepayments.go
│   │   │   ├── braintreepayments_integration_test.go
│   │   │   └── braintreepayments_test.go
│   │   ├── brandfetch/
│   │   │   ├── v1/
│   │   │   │   ├── brandfetch.go
│   │   │   │   ├── brandfetch_integration_test.go
│   │   │   │   └── brandfetch_test.go
│   │   │   └── v2/
│   │   │       ├── brandfetch.go
│   │   │       ├── brandfetch_integration_test.go
│   │   │       └── brandfetch_test.go
│   │   ├── browserstack/
│   │   │   ├── browserstack.go
│   │   │   ├── browserstack_integration_test.go
│   │   │   └── browserstack_test.go
│   │   ├── browshot/
│   │   │   ├── browshot.go
│   │   │   ├── browshot_integration_test.go
│   │   │   └── browshot_test.go
│   │   ├── bscscan/
│   │   │   ├── bscscan.go
│   │   │   ├── bscscan_integration_test.go
│   │   │   └── bscscan_test.go
│   │   ├── buddyns/
│   │   │   ├── buddyns.go
│   │   │   ├── buddyns_integration_test.go
│   │   │   └── buddyns_test.go
│   │   ├── budibase/
│   │   │   ├── budibase.go
│   │   │   ├── budibase_integration_test.go
│   │   │   └── budibase_test.go
│   │   ├── bugherd/
│   │   │   ├── bugherd.go
│   │   │   ├── bugherd_integration_test.go
│   │   │   └── bugherd_test.go
│   │   ├── bugsnag/
│   │   │   ├── bugsnag.go
│   │   │   ├── bugsnag_integration_test.go
│   │   │   └── bugsnag_test.go
│   │   ├── buildkite/
│   │   │   ├── v1/
│   │   │   │   ├── buildkite.go
│   │   │   │   ├── buildkite_integration_test.go
│   │   │   │   └── buildkite_test.go
│   │   │   └── v2/
│   │   │       ├── buildkite.go
│   │   │       ├── buildkite_test.go
│   │   │       └── buildkitev2_integration_test.go
│   │   ├── bulbul/
│   │   │   ├── bulbul.go
│   │   │   ├── bulbul_integration_test.go
│   │   │   └── bulbul_test.go
│   │   ├── bulksms/
│   │   │   ├── bulksms.go
│   │   │   ├── bulksms_integration_test.go
│   │   │   └── bulksms_test.go
│   │   ├── buttercms/
│   │   │   ├── buttercms.go
│   │   │   ├── buttercms_integration_test.go
│   │   │   └── buttercms_test.go
│   │   ├── caflou/
│   │   │   ├── caflou.go
│   │   │   ├── caflou_integration_test.go
│   │   │   └── caflou_test.go
│   │   ├── calendarific/
│   │   │   ├── calendarific.go
│   │   │   ├── calendarific_integration_test.go
│   │   │   └── calendarific_test.go
│   │   ├── calendlyapikey/
│   │   │   ├── calendlyapikey.go
│   │   │   ├── calendlyapikey_integration_test.go
│   │   │   └── calendlyapikey_test.go
│   │   ├── calorieninja/
│   │   │   ├── calorieninja.go
│   │   │   ├── calorieninja_integration_test.go
│   │   │   └── calorieninja_test.go
│   │   ├── campayn/
│   │   │   ├── campayn.go
│   │   │   ├── campayn_integration_test.go
│   │   │   └── campayn_test.go
│   │   ├── cannyio/
│   │   │   ├── cannyio.go
│   │   │   ├── cannyio_integration_test.go
│   │   │   └── cannyio_test.go
│   │   ├── capsulecrm/
│   │   │   ├── capsulecrm.go
│   │   │   ├── capsulecrm_integration_test.go
│   │   │   └── capsulecrm_test.go
│   │   ├── captaindata/
│   │   │   ├── v1/
│   │   │   │   ├── captaindata.go
│   │   │   │   ├── captaindata_integration_test.go
│   │   │   │   └── captaindata_test.go
│   │   │   └── v2/
│   │   │       ├── captaindata.go
│   │   │       ├── captaindata_integration_test.go
│   │   │       └── captaindata_test.go
│   │   ├── carboninterface/
│   │   │   ├── carboninterface.go
│   │   │   ├── carboninterface_integration_test.go
│   │   │   └── carboninterface_test.go
│   │   ├── cashboard/
│   │   │   ├── cashboard.go
│   │   │   ├── cashboard_integration_test.go
│   │   │   └── cashboard_test.go
│   │   ├── caspio/
│   │   │   ├── caspio.go
│   │   │   ├── caspio_integration_test.go
│   │   │   └── caspio_test.go
│   │   ├── censys/
│   │   │   ├── censys.go
│   │   │   ├── censys_integration_test.go
│   │   │   └── censys_test.go
│   │   ├── centralstationcrm/
│   │   │   ├── centralstationcrm.go
│   │   │   ├── centralstationcrm_integration_test.go
│   │   │   └── centralstationcrm_test.go
│   │   ├── cexio/
│   │   │   ├── cexio.go
│   │   │   ├── cexio_integration_test.go
│   │   │   └── cexio_test.go
│   │   ├── chartmogul/
│   │   │   ├── chartmogul.go
│   │   │   ├── chartmogul_integration_test.go
│   │   │   └── chartmogul_test.go
│   │   ├── chatbot/
│   │   │   ├── chatbot.go
│   │   │   ├── chatbot_integration_test.go
│   │   │   └── chatbot_test.go
│   │   ├── chatfule/
│   │   │   ├── chatfule.go
│   │   │   ├── chatfule_integration_test.go
│   │   │   └── chatfule_test.go
│   │   ├── checio/
│   │   │   ├── checio.go
│   │   │   ├── checio_integration_test.go
│   │   │   └── checio_test.go
│   │   ├── checklyhq/
│   │   │   ├── checklyhq.go
│   │   │   ├── checklyhq_integration_test.go
│   │   │   └── checklyhq_test.go
│   │   ├── checkout/
│   │   │   ├── checkout.go
│   │   │   ├── checkout_integration_test.go
│   │   │   └── checkout_test.go
│   │   ├── checkvist/
│   │   │   ├── checkvist.go
│   │   │   ├── checkvist_integration_test.go
│   │   │   └── checkvist_test.go
│   │   ├── cicero/
│   │   │   ├── cicero.go
│   │   │   ├── cicero_integration_test.go
│   │   │   └── cicero_test.go
│   │   ├── circleci/
│   │   │   ├── v1/
│   │   │   │   ├── circleci.go
│   │   │   │   ├── circleci_integration_test.go
│   │   │   │   └── circleci_test.go
│   │   │   └── v2/
│   │   │       ├── circleci.go
│   │   │       ├── circleci_integration_test.go
│   │   │       └── circleci_test.go
│   │   ├── clarifai/
│   │   │   ├── clarifai.go
│   │   │   ├── clarifai_integration_test.go
│   │   │   └── clarifai_test.go
│   │   ├── clearbit/
│   │   │   ├── clearbit.go
│   │   │   ├── clearbit_integration_test.go
│   │   │   └── clearbit_test.go
│   │   ├── clickhelp/
│   │   │   ├── clickhelp.go
│   │   │   ├── clickhelp_integration_test.go
│   │   │   └── clickhelp_test.go
│   │   ├── clicksendsms/
│   │   │   ├── clicksendsms.go
│   │   │   ├── clicksendsms_integration_test.go
│   │   │   └── clicksendsms_test.go
│   │   ├── clickuppersonaltoken/
│   │   │   ├── clickuppersonaltoken.go
│   │   │   ├── clickuppersonaltoken_integration_test.go
│   │   │   └── clickuppersonaltoken_test.go
│   │   ├── cliengo/
│   │   │   ├── cliengo.go
│   │   │   ├── cliengo_integration_test.go
│   │   │   └── cliengo_test.go
│   │   ├── clientary/
│   │   │   ├── clientary.go
│   │   │   ├── clientary_integration_test.go
│   │   │   └── clientary_test.go
│   │   ├── clinchpad/
│   │   │   ├── clinchpad.go
│   │   │   ├── clinchpad_integration_test.go
│   │   │   └── clinchpad_test.go
│   │   ├── clockify/
│   │   │   ├── clockify.go
│   │   │   ├── clockify_integration_test.go
│   │   │   └── clockify_test.go
│   │   ├── clockworksms/
│   │   │   ├── clockworksms.go
│   │   │   ├── clockworksms_integration_test.go
│   │   │   └── clockworksms_test.go
│   │   ├── closecrm/
│   │   │   ├── close.go
│   │   │   ├── close_integration_test.go
│   │   │   └── close_test.go
│   │   ├── cloudconvert/
│   │   │   ├── cloudconvert.go
│   │   │   ├── cloudconvert_integration_test.go
│   │   │   └── cloudconvert_test.go
│   │   ├── cloudelements/
│   │   │   ├── cloudelements.go
│   │   │   ├── cloudelements_integration_test.go
│   │   │   └── cloudelements_test.go
│   │   ├── cloudflareapitoken/
│   │   │   ├── cloudflareapitoken.go
│   │   │   ├── cloudflareapitoken_integration_test.go
│   │   │   └── cloudflareapitoken_test.go
│   │   ├── cloudflarecakey/
│   │   │   ├── cloudflarecakey.go
│   │   │   ├── cloudflarecakey_integration_test.go
│   │   │   └── cloudflarecakey_test.go
│   │   ├── cloudflareglobalapikey/
│   │   │   ├── cloudflareglobalapikey.go
│   │   │   ├── cloudflareglobalapikey_integration_test.go
│   │   │   └── cloudflareglobalapikey_test.go
│   │   ├── cloudimage/
│   │   │   ├── cloudimage.go
│   │   │   ├── cloudimage_integration_test.go
│   │   │   └── cloudimage_test.go
│   │   ├── cloudmersive/
│   │   │   ├── cloudmersive.go
│   │   │   ├── cloudmersive_integration_test.go
│   │   │   └── cloudmersive_test.go
│   │   ├── cloudplan/
│   │   │   ├── cloudplan.go
│   │   │   ├── cloudplan_integration_test.go
│   │   │   └── cloudplan_test.go
│   │   ├── cloudsmith/
│   │   │   ├── cloudsmith.go
│   │   │   ├── cloudsmith_integration_test.go
│   │   │   └── cloudsmith_test.go
│   │   ├── cloverly/
│   │   │   ├── cloverly.go
│   │   │   ├── cloverly_integration_test.go
│   │   │   └── cloverly_test.go
│   │   ├── cloze/
│   │   │   ├── cloze.go
│   │   │   ├── cloze_integration_test.go
│   │   │   └── cloze_test.go
│   │   ├── clustdoc/
│   │   │   ├── clustdoc.go
│   │   │   ├── clustdoc_integration_test.go
│   │   │   └── clustdoc_test.go
│   │   ├── coda/
│   │   │   ├── coda.go
│   │   │   ├── coda_integration_test.go
│   │   │   └── coda_test.go
│   │   ├── codacy/
│   │   │   ├── codacy.go
│   │   │   ├── codacy_integration_test.go
│   │   │   └── codacy_test.go
│   │   ├── codeclimate/
│   │   │   ├── codeclimate.go
│   │   │   ├── codeclimate_integration_test.go
│   │   │   └── codeclimate_test.go
│   │   ├── codemagic/
│   │   │   ├── codemagic.go
│   │   │   ├── codemagic_integration_test.go
│   │   │   └── codemagic_test.go
│   │   ├── codequiry/
│   │   │   ├── codequiry.go
│   │   │   ├── codequiry_integration_test.go
│   │   │   └── codequiry_test.go
│   │   ├── coinapi/
│   │   │   ├── coinapi.go
│   │   │   ├── coinapi_integration_test.go
│   │   │   └── coinapi_test.go
│   │   ├── coinbase/
│   │   │   ├── coinbase.go
│   │   │   ├── coinbase_integration_test.go
│   │   │   └── coinbase_test.go
│   │   ├── coinlayer/
│   │   │   ├── coinlayer.go
│   │   │   ├── coinlayer_integration_test.go
│   │   │   └── coinlayer_test.go
│   │   ├── coinlib/
│   │   │   ├── coinlib.go
│   │   │   ├── coinlib_integration_test.go
│   │   │   └── coinlib_test.go
│   │   ├── collect2/
│   │   │   ├── collect2.go
│   │   │   ├── collect2_integration_test.go
│   │   │   └── collect2_test.go
│   │   ├── column/
│   │   │   ├── column.go
│   │   │   ├── column_integration_test.go
│   │   │   └── column_test.go
│   │   ├── commercejs/
│   │   │   ├── commercejs.go
│   │   │   ├── commercejs_integration_test.go
│   │   │   └── commercejs_test.go
│   │   ├── commodities/
│   │   │   ├── commodities.go
│   │   │   ├── commodities_integration_test.go
│   │   │   └── commodities_test.go
│   │   ├── companyhub/
│   │   │   ├── companyhub.go
│   │   │   ├── companyhub_integration_test.go
│   │   │   └── companyhub_test.go
│   │   ├── confluent/
│   │   │   ├── confluent.go
│   │   │   ├── confluent_integration_test.go
│   │   │   └── confluent_test.go
│   │   ├── contentfulpersonalaccesstoken/
│   │   │   ├── contentfulpersonalaccesstoken.go
│   │   │   ├── contentfulpersonalaccesstoken_test.go
│   │   │   └── contentfulpersonalacesstoken_integration_test.go
│   │   ├── conversiontools/
│   │   │   ├── conversiontools.go
│   │   │   ├── conversiontools_integration_test.go
│   │   │   └── conversiontools_test.go
│   │   ├── convertapi/
│   │   │   ├── convertapi.go
│   │   │   ├── convertapi_integration_test.go
│   │   │   └── convertapi_test.go
│   │   ├── convertkit/
│   │   │   ├── convertkit.go
│   │   │   ├── convertkit_integration_test.go
│   │   │   └── convertkit_test.go
│   │   ├── convier/
│   │   │   ├── convier.go
│   │   │   ├── convier_integration_test.go
│   │   │   └── convier_test.go
│   │   ├── copper/
│   │   │   ├── copper.go
│   │   │   ├── copper_integration_test.go
│   │   │   └── copper_test.go
│   │   ├── copy_metadata_test.go
│   │   ├── couchbase/
│   │   │   ├── couchbase.go
│   │   │   ├── couchbase_integration_test.go
│   │   │   └── couchbase_test.go
│   │   ├── countrylayer/
│   │   │   ├── countrylayer.go
│   │   │   ├── countrylayer_integration_test.go
│   │   │   └── countrylayer_test.go
│   │   ├── courier/
│   │   │   ├── courier.go
│   │   │   ├── courier_integration_test.go
│   │   │   └── courier_test.go
│   │   ├── coveralls/
│   │   │   ├── coveralls.go
│   │   │   ├── coveralls_integration_test.go
│   │   │   └── coveralls_test.go
│   │   ├── craftmypdf/
│   │   │   ├── craftmypdf.go
│   │   │   ├── craftmypdf_integration_test.go
│   │   │   └── craftmypdf_test.go
│   │   ├── crowdin/
│   │   │   ├── crowdin.go
│   │   │   ├── crowdin_integration_test.go
│   │   │   └── crowdin_test.go
│   │   ├── cryptocompare/
│   │   │   ├── cryptocompare.go
│   │   │   ├── cryptocompare_integration_test.go
│   │   │   └── cryptocompare_test.go
│   │   ├── currencycloud/
│   │   │   ├── currencycloud.go
│   │   │   ├── currencycloud_integration_test.go
│   │   │   └── currencycloud_test.go
│   │   ├── currencyfreaks/
│   │   │   ├── currencyfreaks.go
│   │   │   ├── currencyfreaks_integration_test.go
│   │   │   └── currencyfreaks_test.go
│   │   ├── currencylayer/
│   │   │   ├── currencylayer.go
│   │   │   ├── currencylayer_integration_test.go
│   │   │   └── currencylayer_test.go
│   │   ├── currencyscoop/
│   │   │   ├── currencyscoop.go
│   │   │   ├── currencyscoop_integration_test.go
│   │   │   └── currencyscoop_test.go
│   │   ├── currentsapi/
│   │   │   ├── currentsapi.go
│   │   │   ├── currentsapi_integration_test.go
│   │   │   └── currentsapi_test.go
│   │   ├── customerguru/
│   │   │   ├── customerguru.go
│   │   │   ├── customerguru_integration_test.go
│   │   │   └── customerguru_test.go
│   │   ├── customerio/
│   │   │   ├── customerio.go
│   │   │   ├── customerio_integration_test.go
│   │   │   └── customerio_test.go
│   │   ├── d7network/
│   │   │   ├── d7network.go
│   │   │   ├── d7network_integration_test.go
│   │   │   └── d7network_test.go
│   │   ├── dailyco/
│   │   │   ├── dailyco.go
│   │   │   ├── dailyco_integration_test.go
│   │   │   └── dailyco_test.go
│   │   ├── dandelion/
│   │   │   ├── dandelion.go
│   │   │   ├── dandelion_integration_test.go
│   │   │   └── dandelion_test.go
│   │   ├── dareboost/
│   │   │   ├── dareboost.go
│   │   │   ├── dareboost_integration_test.go
│   │   │   └── dareboost_test.go
│   │   ├── databox/
│   │   │   ├── databox.go
│   │   │   ├── databox_integration_test.go
│   │   │   └── databox_test.go
│   │   ├── databrickstoken/
│   │   │   ├── databrickstoken.go
│   │   │   ├── databrickstoken_integration_test.go
│   │   │   └── databrickstoken_test.go
│   │   ├── datadogapikey/
│   │   │   ├── datadogapikey.go
│   │   │   ├── datadogapikey_integration_test.go
│   │   │   └── datadogapikey_test.go
│   │   ├── datadogtoken/
│   │   │   ├── datadogtoken.go
│   │   │   ├── datadogtoken_integration_test.go
│   │   │   └── datadogtoken_test.go
│   │   ├── datagov/
│   │   │   ├── datagov.go
│   │   │   ├── datagov_integration_test.go
│   │   │   └── datagov_test.go
│   │   ├── debounce/
│   │   │   ├── debounce.go
│   │   │   ├── debounce_integration_test.go
│   │   │   └── debounce_test.go
│   │   ├── deepai/
│   │   │   ├── deepai.go
│   │   │   ├── deepai_integration_test.go
│   │   │   └── deepai_test.go
│   │   ├── deepgram/
│   │   │   ├── deepgram.go
│   │   │   ├── deepgram_integration_test.go
│   │   │   └── deepgram_test.go
│   │   ├── deepseek/
│   │   │   ├── deepseek.go
│   │   │   ├── deepseek_integration_test.go
│   │   │   └── deepseek_test.go
│   │   ├── delighted/
│   │   │   ├── delighted.go
│   │   │   ├── delighted_integration_test.go
│   │   │   └── delighted_test.go
│   │   ├── demio/
│   │   │   ├── demio.go
│   │   │   ├── demio_integration_test.go
│   │   │   └── demio_test.go
│   │   ├── deno/
│   │   │   ├── denodeploy.go
│   │   │   ├── denodeploy_integration_test.go
│   │   │   └── denodeploy_test.go
│   │   ├── deputy/
│   │   │   ├── deputy.go
│   │   │   ├── deputy_integration_test.go
│   │   │   └── deputy_test.go
│   │   ├── detectify/
│   │   │   ├── detectify.go
│   │   │   ├── detectify_integration_test.go
│   │   │   └── detectify_test.go
│   │   ├── detectlanguage/
│   │   │   ├── detectlanguage.go
│   │   │   ├── detectlanguage_integration_test.go
│   │   │   └── detectlanguage_test.go
│   │   ├── detectors.go
│   │   ├── detectors_test.go
│   │   ├── dfuse/
│   │   │   ├── dfuse.go
│   │   │   ├── dfuse_integration_test.go
│   │   │   └── dfuse_test.go
│   │   ├── diffbot/
│   │   │   ├── diffbot.go
│   │   │   ├── diffbot_integration_test.go
│   │   │   └── diffbot_test.go
│   │   ├── diggernaut/
│   │   │   ├── diggernaut.go
│   │   │   ├── diggernaut_integration_test.go
│   │   │   └── diggernaut_test.go
│   │   ├── digitaloceantoken/
│   │   │   ├── digitaloceantoken.go
│   │   │   ├── digitaloceantoken_integration_test.go
│   │   │   └── digitaloceantoken_test.go
│   │   ├── digitaloceanv2/
│   │   │   ├── digitaloceanv2.go
│   │   │   ├── digitaloceanv2_integration_test.go
│   │   │   └── digitaloceanv2_test.go
│   │   ├── discordbottoken/
│   │   │   ├── discordbottoken.go
│   │   │   ├── discordbottoken_integration_test.go
│   │   │   └── discordbottoken_test.go
│   │   ├── discordwebhook/
│   │   │   ├── discordwebhook.go
│   │   │   ├── discordwebhook_integration_test.go
│   │   │   └── discordwebhook_test.go
│   │   ├── disqus/
│   │   │   ├── disqus.go
│   │   │   ├── disqus_integration_test.go
│   │   │   └── disqus_test.go
│   │   ├── ditto/
│   │   │   ├── ditto.go
│   │   │   ├── ditto_integration_test.go
│   │   │   └── ditto_test.go
│   │   ├── dnscheck/
│   │   │   ├── dnscheck.go
│   │   │   ├── dnscheck_integration_test.go
│   │   │   └── dnscheck_test.go
│   │   ├── docker/
│   │   │   ├── docker_auth_config.go
│   │   │   ├── docker_auth_config_integration_test.go
│   │   │   └── docker_auth_config_test.go
│   │   ├── dockerhub/
│   │   │   ├── v1/
│   │   │   │   ├── dockerhub.go
│   │   │   │   ├── dockerhub_integration_test.go
│   │   │   │   └── dockerhub_test.go
│   │   │   └── v2/
│   │   │       ├── dockerhub.go
│   │   │       ├── dockerhub_integration_test.go
│   │   │       └── dockerhub_test.go
│   │   ├── docparser/
│   │   │   ├── docparser.go
│   │   │   ├── docparser_integration_test.go
│   │   │   └── docparser_test.go
│   │   ├── documo/
│   │   │   ├── documo.go
│   │   │   ├── documo_integration_test.go
│   │   │   └── documo_test.go
│   │   ├── docusign/
│   │   │   ├── docusign.go
│   │   │   ├── docusign_integration_test.go
│   │   │   └── docusign_test.go
│   │   ├── doppler/
│   │   │   ├── doppler.go
│   │   │   ├── doppler_integration_test.go
│   │   │   └── doppler_test.go
│   │   ├── dotdigital/
│   │   │   ├── dotdigital.go
│   │   │   ├── dotdigital_integration_test.go
│   │   │   └── dotdigital_test.go
│   │   ├── dovico/
│   │   │   ├── dovico.go
│   │   │   ├── dovico_integration_test.go
│   │   │   └── dovico_test.go
│   │   ├── dronahq/
│   │   │   ├── dronahq.go
│   │   │   ├── dronahq_integration_test.go
│   │   │   └── dronahq_test.go
│   │   ├── droneci/
│   │   │   ├── droneci.go
│   │   │   ├── droneci_integration_test.go
│   │   │   └── droneci_test.go
│   │   ├── dropbox/
│   │   │   ├── dropbox.go
│   │   │   ├── dropbox_integration_test.go
│   │   │   └── dropbox_test.go
│   │   ├── duply/
│   │   │   ├── duply.go
│   │   │   ├── duply_integration_test.go
│   │   │   └── duply_test.go
│   │   ├── dwolla/
│   │   │   ├── dwolla.go
│   │   │   ├── dwolla_integration_test.go
│   │   │   └── dwolla_test.go
│   │   ├── dynalist/
│   │   │   ├── dynalist.go
│   │   │   ├── dynalist_integration_test.go
│   │   │   └── dynalist_test.go
│   │   ├── dyspatch/
│   │   │   ├── dyspatch.go
│   │   │   ├── dyspatch_integration_test.go
│   │   │   └── dyspatch_test.go
│   │   ├── eagleeyenetworks/
│   │   │   ├── eagleeyenetworks.go
│   │   │   ├── eagleeyenetworks_integration_test.go
│   │   │   └── eagleeyenetworks_test.go
│   │   ├── easyinsight/
│   │   │   ├── easyinsight.go
│   │   │   ├── easyinsight_integration_test.go
│   │   │   └── easyinsight_test.go
│   │   ├── ecostruxureit/
│   │   │   ├── ecostruxureit.go
│   │   │   ├── ecostruxureit_integration_test.go
│   │   │   └── ecostruxureit_test.go
│   │   ├── edamam/
│   │   │   ├── edamam.go
│   │   │   ├── edamam_integration_test.go
│   │   │   └── edamam_test.go
│   │   ├── edenai/
│   │   │   ├── edenai.go
│   │   │   ├── edenai_integration_test.go
│   │   │   └── edenai_test.go
│   │   ├── eightxeight/
│   │   │   ├── eightxeight.go
│   │   │   ├── eightxeight_integration_test.go
│   │   │   └── eightxeight_test.go
│   │   ├── elasticemail/
│   │   │   ├── elasticemail.go
│   │   │   ├── elasticemail_integration_test.go
│   │   │   └── elasticemail_test.go
│   │   ├── elevenlabs/
│   │   │   ├── v1/
│   │   │   │   ├── elevenlabs.go
│   │   │   │   ├── elevenlabs_integration_test.go
│   │   │   │   └── elevenlabs_test.go
│   │   │   └── v2/
│   │   │       ├── elevenlabs.go
│   │   │       ├── elevenlabs_integration_test.go
│   │   │       └── elevenlabs_test.go
│   │   ├── enablex/
│   │   │   ├── enablex.go
│   │   │   ├── enablex_integration_test.go
│   │   │   └── enablex_test.go
│   │   ├── endorlabs/
│   │   │   ├── endorlabs.go
│   │   │   ├── endorlabs_integration_test.go
│   │   │   └── endorlabs_test.go
│   │   ├── endpoint_customizer.go
│   │   ├── endpoint_customizer_test.go
│   │   ├── enigma/
│   │   │   ├── enigma.go
│   │   │   ├── enigma_integration_test.go
│   │   │   └── enigma_test.go
│   │   ├── envoyapikey/
│   │   │   ├── envoyapikey.go
│   │   │   ├── envoyapikey_integration_test.go
│   │   │   └── envoyapikey_test.go
│   │   ├── eraser/
│   │   │   ├── eraser.go
│   │   │   ├── eraser_integration_test.go
│   │   │   └── eraser_test.go
│   │   ├── etherscan/
│   │   │   ├── etherscan.go
│   │   │   ├── etherscan_integration_test.go
│   │   │   └── etherscan_test.go
│   │   ├── ethplorer/
│   │   │   ├── ethplorer.go
│   │   │   ├── ethplorer_integration_test.go
│   │   │   └── ethplorer_test.go
│   │   ├── eventbrite/
│   │   │   ├── eventbrite.go
│   │   │   ├── eventbrite_integration_test.go
│   │   │   └── eventbrite_test.go
│   │   ├── everhour/
│   │   │   ├── everhour.go
│   │   │   ├── everhour_integration_test.go
│   │   │   └── everhour_test.go
│   │   ├── exchangerateapi/
│   │   │   ├── exchangerateapi.go
│   │   │   ├── exchangerateapi_integration_test.go
│   │   │   └── exchangerateapi_test.go
│   │   ├── exchangeratesapi/
│   │   │   ├── exchangeratesapi.go
│   │   │   ├── exchangeratesapi_integration_test.go
│   │   │   └── exchangeratesapi_test.go
│   │   ├── exportsdk/
│   │   │   ├── exportsdk.go
│   │   │   ├── exportsdk_integration_test.go
│   │   │   └── exportsdk_test.go
│   │   ├── extractorapi/
│   │   │   ├── extractorapi.go
│   │   │   ├── extractorapi_integration_test.go
│   │   │   └── extractorapi_test.go
│   │   ├── facebookoauth/
│   │   │   ├── facebookoauth.go
│   │   │   ├── facebookoauth_integration_test.go
│   │   │   └── facebookoauth_test.go
│   │   ├── faceplusplus/
│   │   │   ├── faceplusplus.go
│   │   │   ├── faceplusplus_integration_test.go
│   │   │   └── faceplusplus_test.go
│   │   ├── falsepositives.go
│   │   ├── falsepositives_test.go
│   │   ├── fastforex/
│   │   │   ├── fastforex.go
│   │   │   ├── fastforex_integration_test.go
│   │   │   └── fastforex_test.go
│   │   ├── fastlypersonaltoken/
│   │   │   ├── fastlypersonaltoken.go
│   │   │   ├── fastlypersonaltoken_integration_test.go
│   │   │   └── fastlypersonaltoken_test.go
│   │   ├── feedier/
│   │   │   ├── feedier.go
│   │   │   ├── feedier_integration_test.go
│   │   │   └── feedier_test.go
│   │   ├── fetchrss/
│   │   │   ├── fetchrss.go
│   │   │   ├── fetchrss_integration_test.go
│   │   │   └── fetchrss_test.go
│   │   ├── fibery/
│   │   │   ├── fibery.go
│   │   │   ├── fibery_integration_test.go
│   │   │   └── fibery_test.go
│   │   ├── figmapersonalaccesstoken/
│   │   │   ├── v1/
│   │   │   │   ├── figmapersonalaccesstoken.go
│   │   │   │   ├── figmapersonalaccesstoken_test.go
│   │   │   │   └── figmapersonalacesstoken_integration_test.go
│   │   │   └── v2/
│   │   │       ├── figmapersonalaccesstoken_integration_test.go
│   │   │       ├── figmapersonalaccesstoken_v2.go
│   │   │       └── figmapersonalaccesstoken_v2_test.go
│   │   ├── fileio/
│   │   │   ├── fileio.go
│   │   │   ├── fileio_integration_test.go
│   │   │   └── fileio_test.go
│   │   ├── finage/
│   │   │   ├── finage.go
│   │   │   ├── finage_integration_test.go
│   │   │   └── finage_test.go
│   │   ├── financialmodelingprep/
│   │   │   ├── financialmodelingprep.go
│   │   │   ├── financialmodelingprep_integration_test.go
│   │   │   └── financialmodelingprep_test.go
│   │   ├── findl/
│   │   │   ├── findl.go
│   │   │   ├── findl_integration_test.go
│   │   │   └── findl_test.go
│   │   ├── finnhub/
│   │   │   ├── finnhub.go
│   │   │   ├── finnhub_integration_test.go
│   │   │   └── finnhub_test.go
│   │   ├── fixerio/
│   │   │   ├── fixerio.go
│   │   │   ├── fixerio_integration_test.go
│   │   │   └── fixerio_test.go
│   │   ├── flatio/
│   │   │   ├── flatio.go
│   │   │   ├── flatio_integration_test.go
│   │   │   └── flatio_test.go
│   │   ├── fleetbase/
│   │   │   ├── fleetbase.go
│   │   │   ├── fleetbase_integration_test.go
│   │   │   └── fleetbase_test.go
│   │   ├── flexport/
│   │   │   ├── flexport.go
│   │   │   └── flexport_test.go
│   │   ├── flickr/
│   │   │   ├── flickr.go
│   │   │   ├── flickr_integration_test.go
│   │   │   └── flickr_test.go
│   │   ├── flightapi/
│   │   │   ├── flightapi.go
│   │   │   ├── flightapi_integration_test.go
│   │   │   └── flightapi_test.go
│   │   ├── flightlabs/
│   │   │   ├── flightlabs.go
│   │   │   ├── flightlabs_integration_test.go
│   │   │   └── flightlabs_test.go
│   │   ├── flightstats/
│   │   │   ├── flightstats.go
│   │   │   ├── flightstats_integration_test.go
│   │   │   └── flightstats_test.go
│   │   ├── float/
│   │   │   ├── float.go
│   │   │   ├── float_integration_test.go
│   │   │   └── float_test.go
│   │   ├── flowflu/
│   │   │   ├── flowflu.go
│   │   │   ├── flowflu_integration_test.go
│   │   │   └── flowflu_test.go
│   │   ├── flutterwave/
│   │   │   ├── flutterwave.go
│   │   │   ├── flutterwave_integration_test.go
│   │   │   └── flutterwave_test.go
│   │   ├── flyio/
│   │   │   ├── flyio.go
│   │   │   ├── flyio_integration_test.go
│   │   │   └── flyio_test.go
│   │   ├── fmfw/
│   │   │   ├── fmfw.go
│   │   │   ├── fmfw_integration_test.go
│   │   │   └── fmfw_test.go
│   │   ├── formbucket/
│   │   │   ├── formbucket.go
│   │   │   ├── formbucket_integration_test.go
│   │   │   └── formbucket_test.go
│   │   ├── formcraft/
│   │   │   ├── formcraft.go
│   │   │   ├── formcraft_integration_test.go
│   │   │   └── formcraft_test.go
│   │   ├── formio/
│   │   │   ├── formio.go
│   │   │   ├── formio_integration_test.go
│   │   │   └── formio_test.go
│   │   ├── formsite/
│   │   │   ├── formsite.go
│   │   │   ├── formsite_integration_test.go
│   │   │   └── formsite_test.go
│   │   ├── foursquare/
│   │   │   ├── foursquare.go
│   │   │   ├── foursquare_integration_test.go
│   │   │   └── foursquare_test.go
│   │   ├── fp_badlist.txt
│   │   ├── fp_programmingbooks.txt
│   │   ├── fp_uuids.txt
│   │   ├── fp_words.txt
│   │   ├── frameio/
│   │   │   ├── frameio.go
│   │   │   ├── frameio_integration_test.go
│   │   │   └── frameio_test.go
│   │   ├── freshbooks/
│   │   │   ├── freshbooks.go
│   │   │   ├── freshbooks_integration_test.go
│   │   │   └── freshbooks_test.go
│   │   ├── freshdesk/
│   │   │   ├── freshdesk.go
│   │   │   ├── freshdesk_integration_test.go
│   │   │   └── freshdesk_test.go
│   │   ├── front/
│   │   │   ├── front.go
│   │   │   ├── front_integration_test.go
│   │   │   └── front_test.go
│   │   ├── ftp/
│   │   │   ├── ftp.go
│   │   │   ├── ftp_integration_test.go
│   │   │   └── ftp_test.go
│   │   ├── fulcrum/
│   │   │   ├── fulcrum.go
│   │   │   ├── fulcrum_integration_test.go
│   │   │   └── fulcrum_test.go
│   │   ├── fullstory/
│   │   │   ├── v1/
│   │   │   │   ├── fullstory.go
│   │   │   │   ├── fullstory_integration_test.go
│   │   │   │   └── fullstory_test.go
│   │   │   └── v2/
│   │   │       ├── fullstory_integration_test.go
│   │   │       ├── fullstory_v2.go
│   │   │       └── fullstory_v2_test.go
│   │   ├── fxmarket/
│   │   │   ├── fxmarket.go
│   │   │   ├── fxmarket_integration_test.go
│   │   │   └── fxmarket_test.go
│   │   ├── gcp/
│   │   │   ├── gcp.go
│   │   │   ├── gcp_integration_test.go
│   │   │   └── gcp_test.go
│   │   ├── gcpapplicationdefaultcredentials/
│   │   │   ├── gcpapplicationdefaultcredentials.go
│   │   │   ├── gcpapplicationdefaultcredentials_integration_test.go
│   │   │   └── gcpapplicationdefaultcredentials_test.go
│   │   ├── geckoboard/
│   │   │   ├── geckoboard.go
│   │   │   ├── geckoboard_integration_test.go
│   │   │   └── geckoboard_test.go
│   │   ├── gemini/
│   │   │   ├── gemini.go
│   │   │   ├── gemini_integration_test.go
│   │   │   └── gemini_test.go
│   │   ├── generic/
│   │   │   ├── generic.go
│   │   │   ├── generic_integration_test.go
│   │   │   └── generic_test.go
│   │   ├── gengo/
│   │   │   ├── gengo.go
│   │   │   ├── gengo_integration_test.go
│   │   │   └── gengo_test.go
│   │   ├── geoapify/
│   │   │   ├── geoapify.go
│   │   │   ├── geoapify_integration_test.go
│   │   │   └── geoapify_test.go
│   │   ├── geocode/
│   │   │   ├── geocode.go
│   │   │   ├── geocode_integration_test.go
│   │   │   └── geocode_test.go
│   │   ├── geocodify/
│   │   │   ├── geocodify.go
│   │   │   ├── geocodify_integration_test.go
│   │   │   └── geocodify_test.go
│   │   ├── geocodio/
│   │   │   ├── geocodio.go
│   │   │   ├── geocodio_integration_test.go
│   │   │   └── geocodio_test.go
│   │   ├── geoipifi/
│   │   │   ├── geoipifi.go
│   │   │   ├── geoipifi_integration_test.go
│   │   │   └── geoipifi_test.go
│   │   ├── getemail/
│   │   │   ├── getemail.go
│   │   │   ├── getemail_integration_test.go
│   │   │   └── getemail_test.go
│   │   ├── getemails/
│   │   │   ├── getemails.go
│   │   │   ├── getemails_integration_test.go
│   │   │   └── getemails_test.go
│   │   ├── getgeoapi/
│   │   │   ├── getgeoapi.go
│   │   │   ├── getgeoapi_integration_test.go
│   │   │   └── getgeoapi_test.go
│   │   ├── getgist/
│   │   │   ├── getgist.go
│   │   │   ├── getgist_integration_test.go
│   │   │   └── getgist_test.go
│   │   ├── getresponse/
│   │   │   ├── getresponse.go
│   │   │   ├── getresponse_integration_test.go
│   │   │   └── getresponse_test.go
│   │   ├── getsandbox/
│   │   │   ├── getsandbox.go
│   │   │   ├── getsandbox_integration_test.go
│   │   │   └── getsandbox_test.go
│   │   ├── github/
│   │   │   ├── v1/
│   │   │   │   ├── github_integration_test.go
│   │   │   │   ├── github_old.go
│   │   │   │   └── github_old_test.go
│   │   │   └── v2/
│   │   │       ├── github.go
│   │   │       ├── github_integration_test.go
│   │   │       └── github_test.go
│   │   ├── github_oauth2/
│   │   │   ├── github_oauth2.go
│   │   │   └── github_oauth2_test.go
│   │   ├── githubapp/
│   │   │   ├── githubapp.go
│   │   │   ├── githubapp_integration_test.go
│   │   │   └── githubapp_test.go
│   │   ├── gitlab/
│   │   │   ├── v1/
│   │   │   │   ├── gitlab.go
│   │   │   │   ├── gitlab_integration_test.go
│   │   │   │   └── gitlab_v1_test.go
│   │   │   ├── v2/
│   │   │   │   ├── gitlab_integration_test.go
│   │   │   │   ├── gitlab_v2.go
│   │   │   │   └── gitlab_v2_test.go
│   │   │   └── v3/
│   │   │       ├── gitlab_v3.go
│   │   │       ├── gitlab_v3_integration_test.go
│   │   │       └── gitlab_v3_test.go
│   │   ├── gitter/
│   │   │   ├── gitter.go
│   │   │   ├── gitter_integration_test.go
│   │   │   └── gitter_test.go
│   │   ├── glassnode/
│   │   │   ├── glassnode.go
│   │   │   ├── glassnode_integration_test.go
│   │   │   └── glassnode_test.go
│   │   ├── gocanvas/
│   │   │   ├── gocanvas.go
│   │   │   ├── gocanvas_integration_test.go
│   │   │   └── gocanvas_test.go
│   │   ├── gocardless/
│   │   │   ├── gocardless.go
│   │   │   ├── gocardless_integration_test.go
│   │   │   └── gocardless_test.go
│   │   ├── godaddy/
│   │   │   ├── v1/
│   │   │   │   ├── godaddy.go
│   │   │   │   ├── godaddy_integration_test.go
│   │   │   │   └── godaddy_test.go
│   │   │   └── v2/
│   │   │       ├── godaddy.go
│   │   │       ├── godaddy_integration_test.go
│   │   │       └── godaddy_test.go
│   │   ├── goodday/
│   │   │   ├── goodday.go
│   │   │   ├── goodday_integration_test.go
│   │   │   └── goodday_test.go
│   │   ├── googlegemini/
│   │   │   ├── googlegemini.go
│   │   │   ├── googlegemini_integration_test.go
│   │   │   └── googlegemini_test.go
│   │   ├── googleoauth2/
│   │   │   ├── googleoauth2_access_token.go
│   │   │   ├── googleoauth2_access_token_test.go
│   │   │   └── googleoauth2_integration_test.go
│   │   ├── grafana/
│   │   │   ├── grafana.go
│   │   │   ├── grafana_integration_test.go
│   │   │   └── grafana_test.go
│   │   ├── grafanaserviceaccount/
│   │   │   ├── grafanaserviceaccount.go
│   │   │   ├── grafanaserviceaccount_integration_test.go
│   │   │   └── grafanaserviceaccount_test.go
│   │   ├── graphcms/
│   │   │   ├── graphcms.go
│   │   │   ├── graphcms_integration_test.go
│   │   │   └── graphcms_test.go
│   │   ├── graphhopper/
│   │   │   ├── graphhopper.go
│   │   │   ├── graphhopper_integration_test.go
│   │   │   └── graphhopper_test.go
│   │   ├── groovehq/
│   │   │   ├── groovehq.go
│   │   │   ├── groovehq_integration_test.go
│   │   │   └── groovehq_test.go
│   │   ├── groq/
│   │   │   ├── groq.go
│   │   │   ├── groq_integration_test.go
│   │   │   └── groq_test.go
│   │   ├── gtmetrix/
│   │   │   ├── gtmetrix.go
│   │   │   ├── gtmetrix_integration_test.go
│   │   │   └── gtmetrix_test.go
│   │   ├── guardianapi/
│   │   │   ├── guardianapi.go
│   │   │   ├── guardianapi_integration_test.go
│   │   │   └── guardianapi_test.go
│   │   ├── gumroad/
│   │   │   ├── gumroad.go
│   │   │   ├── gumroad_integration_test.go
│   │   │   └── gumroad_test.go
│   │   ├── guru/
│   │   │   ├── guru.go
│   │   │   ├── guru_integration_test.go
│   │   │   └── guru_test.go
│   │   ├── gyazo/
│   │   │   ├── gyazo.go
│   │   │   ├── gyazo_integration_test.go
│   │   │   └── gyazo_test.go
│   │   ├── happyscribe/
│   │   │   ├── happyscribe.go
│   │   │   ├── happyscribe_integration_test.go
│   │   │   └── happyscribe_test.go
│   │   ├── harness/
│   │   │   ├── harness.go
│   │   │   ├── harness_integration_test.go
│   │   │   └── harness_test.go
│   │   ├── harvest/
│   │   │   ├── harvest.go
│   │   │   ├── harvest_integration_test.go
│   │   │   └── harvest_test.go
│   │   ├── hashicorpvaultauth/
│   │   │   ├── hashicorpvaultauth.go
│   │   │   ├── hashicorpvaultauth_integration_test.go
│   │   │   └── hashicorpvaultauth_test.go
│   │   ├── hasura/
│   │   │   ├── hasura.go
│   │   │   ├── hasura_integration_test.go
│   │   │   └── hasura_test.go
│   │   ├── hellosign/
│   │   │   ├── hellosign.go
│   │   │   ├── hellosign_integration_test.go
│   │   │   └── hellosign_test.go
│   │   ├── helpcrunch/
│   │   │   ├── helpcrunch.go
│   │   │   ├── helpcrunch_integration_test.go
│   │   │   └── helpcrunch_test.go
│   │   ├── helpscout/
│   │   │   ├── helpscout.go
│   │   │   ├── helpscout_integration_test.go
│   │   │   └── helpscout_test.go
│   │   ├── hereapi/
│   │   │   ├── hereapi.go
│   │   │   ├── hereapi_integration_test.go
│   │   │   └── hereapi_test.go
│   │   ├── heroku/
│   │   │   ├── v1/
│   │   │   │   ├── heroku.go
│   │   │   │   ├── heroku_integration_test.go
│   │   │   │   └── heroku_test.go
│   │   │   └── v2/
│   │   │       ├── heroku.go
│   │   │       ├── heroku_integration_test.go
│   │   │       └── heroku_test.go
│   │   ├── hive/
│   │   │   ├── hive.go
│   │   │   ├── hive_integration_test.go
│   │   │   └── hive_test.go
│   │   ├── hiveage/
│   │   │   ├── hiveage.go
│   │   │   ├── hiveage_integration_test.go
│   │   │   └── hiveage_test.go
│   │   ├── holidayapi/
│   │   │   ├── holidayapi.go
│   │   │   ├── holidayapi_integration_test.go
│   │   │   └── holidayapi_test.go
│   │   ├── holistic/
│   │   │   ├── holistic.go
│   │   │   ├── holistic_integration_test.go
│   │   │   └── holistic_test.go
│   │   ├── honeycomb/
│   │   │   ├── honeycomb.go
│   │   │   ├── honeycomb_integration_test.go
│   │   │   └── honeycomb_test.go
│   │   ├── host/
│   │   │   ├── host.go
│   │   │   ├── host_integration_test.go
│   │   │   └── host_test.go
│   │   ├── html2pdf/
│   │   │   ├── html2pdf.go
│   │   │   ├── html2pdf_integration_test.go
│   │   │   └── html2pdf_test.go
│   │   ├── http.go
│   │   ├── http_test.go
│   │   ├── hubspot_apikey/
│   │   │   ├── v1/
│   │   │   │   ├── apikey.go
│   │   │   │   ├── apikey_integration_test.go
│   │   │   │   └── apikey_test.go
│   │   │   └── v2/
│   │   │       ├── apikey.go
│   │   │       ├── apikey_integration_test.go
│   │   │       └── apikey_test.go
│   │   ├── huggingface/
│   │   │   ├── huggingface.go
│   │   │   ├── huggingface_integration_test.go
│   │   │   └── huggingface_test.go
│   │   ├── humanity/
│   │   │   ├── humanity.go
│   │   │   ├── humanity_integration_test.go
│   │   │   └── humanity_test.go
│   │   ├── hunter/
│   │   │   ├── hunter.go
│   │   │   ├── hunter_integration_test.go
│   │   │   └── hunter_test.go
│   │   ├── hybiscus/
│   │   │   ├── hybiscus.go
│   │   │   ├── hybiscus_integration_test.go
│   │   │   └── hybiscus_test.go
│   │   ├── hypertrack/
│   │   │   ├── hypertrack.go
│   │   │   ├── hypertrack_integration_test.go
│   │   │   └── hypertrack_test.go
│   │   ├── ibmclouduserkey/
│   │   │   ├── ibmclouduserkey.go
│   │   │   ├── ibmclouduserkey_integration_test.go
│   │   │   └── ibmclouduserkey_test.go
│   │   ├── iconfinder/
│   │   │   ├── iconfinder.go
│   │   │   ├── iconfinder_integreation_test.go
│   │   │   └── iconfinder_test.go
│   │   ├── iexapis/
│   │   │   ├── iexapis.go
│   │   │   ├── iexapis_integration_test.go
│   │   │   └── iexapis_test.go
│   │   ├── iexcloud/
│   │   │   ├── iexcloud.go
│   │   │   ├── iexcloud_integration_test.go
│   │   │   └── iexcloud_test.go
│   │   ├── imagekit/
│   │   │   ├── imagekit.go
│   │   │   ├── imagekit_integration_test.go
│   │   │   └── imagekit_test.go
│   │   ├── imagga/
│   │   │   ├── imagga.go
│   │   │   ├── imagga_integration_test.go
│   │   │   └── imagga_test.go
│   │   ├── impala/
│   │   │   ├── impala.go
│   │   │   ├── impala_integration_test.go
│   │   │   └── impala_test.go
│   │   ├── infura/
│   │   │   ├── infura.go
│   │   │   ├── infura_integration_test.go
│   │   │   └── infura_test.go
│   │   ├── insightly/
│   │   │   ├── insightly.go
│   │   │   ├── insightly_integration_test.go
│   │   │   └── insightly_test.go
│   │   ├── instabot/
│   │   │   ├── instabot.go
│   │   │   ├── instabot_integration_test.go
│   │   │   └── instabot_test.go
│   │   ├── instamojo/
│   │   │   ├── instamojo.go
│   │   │   ├── instamojo_integration_test.go
│   │   │   └── instamojo_test.go
│   │   ├── intercom/
│   │   │   ├── intercom.go
│   │   │   ├── intercom_integration_test.go
│   │   │   └── intercom_test.go
│   │   ├── interseller/
│   │   │   ├── interseller.go
│   │   │   ├── interseller_integration_test.go
│   │   │   └── interseller_test.go
│   │   ├── intra42/
│   │   │   ├── intra42.go
│   │   │   ├── intra42_integration_test.go
│   │   │   └── intra42_test.go
│   │   ├── intrinio/
│   │   │   ├── intrinio.go
│   │   │   ├── intrinio_integration_test.go
│   │   │   └── intrinio_test.go
│   │   ├── invoiceocean/
│   │   │   ├── invoiceocean.go
│   │   │   ├── invoiceocean_integration_test.go
│   │   │   └── invoiceocean_test.go
│   │   ├── ip2location/
│   │   │   ├── ip2location.go
│   │   │   ├── ip2location_integration_test.go
│   │   │   └── ip2location_test.go
│   │   ├── ipapi/
│   │   │   ├── ipapi.go
│   │   │   ├── ipapi_integration_test.go
│   │   │   └── ipapi_test.go
│   │   ├── ipgeolocation/
│   │   │   ├── ipgeolocation.go
│   │   │   ├── ipgeolocation_integration_test.go
│   │   │   └── ipgeolocation_test.go
│   │   ├── ipinfo/
│   │   │   ├── ipinfo.go
│   │   │   ├── ipinfo_integration_test.go
│   │   │   └── ipinfo_test.go
│   │   ├── ipinfodb/
│   │   │   ├── ipinfodb.go
│   │   │   ├── ipinfodb_integration_test.go
│   │   │   └── ipinfodb_test.go
│   │   ├── ipquality/
│   │   │   ├── ipquality.go
│   │   │   ├── ipquality_integration_test.go
│   │   │   └── ipquality_test.go
│   │   ├── ipstack/
│   │   │   ├── ipstack.go
│   │   │   ├── ipstack_integration_test.go
│   │   │   └── ipstack_test.go
│   │   ├── jdbc/
│   │   │   ├── jdbc.go
│   │   │   ├── jdbc_integration_test.go
│   │   │   ├── jdbc_test.go
│   │   │   ├── models.go
│   │   │   ├── mysql.go
│   │   │   ├── mysql_integration_test.go
│   │   │   ├── mysql_test.go
│   │   │   ├── postgres.go
│   │   │   ├── postgres_integration_test.go
│   │   │   ├── postgres_test.go
│   │   │   ├── sqlserver.go
│   │   │   ├── sqlserver_integration_test.go
│   │   │   └── sqlserver_test.go
│   │   ├── jiratoken/
│   │   │   ├── v1/
│   │   │   │   ├── jiratoken.go
│   │   │   │   ├── jiratoken_integration_test.go
│   │   │   │   └── jiratoken_test.go
│   │   │   └── v2/
│   │   │       ├── jiratoken_v2.go
│   │   │       ├── jiratoken_v2_integration_test.go
│   │   │       └── jiratoken_v2_test.go
│   │   ├── jotform/
│   │   │   ├── jotform.go
│   │   │   ├── jotform_integration_test.go
│   │   │   └── jotform_test.go
│   │   ├── jumpcloud/
│   │   │   ├── jumpcloud.go
│   │   │   ├── jumpcloud_integration_test.go
│   │   │   └── jumpcloud_test.go
│   │   ├── jupiterone/
│   │   │   ├── jupiterone.go
│   │   │   ├── jupiterone_integration_test.go
│   │   │   └── jupiterone_test.go
│   │   ├── juro/
│   │   │   ├── juro.go
│   │   │   ├── juro_integration_test.go
│   │   │   └── juro_test.go
│   │   ├── jwt/
│   │   │   ├── jwt.go
│   │   │   └── jwt_test.go
│   │   ├── kanban/
│   │   │   ├── kanban.go
│   │   │   ├── kanban_integration_test.go
│   │   │   └── kanban_test.go
│   │   ├── kanbantool/
│   │   │   ├── kanbantool.go
│   │   │   ├── kanbantool_integration_test.go
│   │   │   └── kanbantool_test.go
│   │   ├── karmacrm/
│   │   │   ├── karmacrm.go
│   │   │   ├── karmacrm_integration_test.go
│   │   │   └── karmacrm_test.go
│   │   ├── keenio/
│   │   │   ├── keenio.go
│   │   │   ├── keenio_integration_test.go
│   │   │   └── keenio_test.go
│   │   ├── kickbox/
│   │   │   ├── kickbox.go
│   │   │   ├── kickbox_integration_test.go
│   │   │   └── kickbox_test.go
│   │   ├── klaviyo/
│   │   │   ├── klaviyo.go
│   │   │   ├── klaviyo_integration_test.go
│   │   │   └── klaviyo_test.go
│   │   ├── klipfolio/
│   │   │   ├── klipfolio.go
│   │   │   ├── klipfolio_integration_test.go
│   │   │   └── klipfolio_test.go
│   │   ├── knapsackpro/
│   │   │   ├── knapsackpro.go
│   │   │   ├── knapsackpro_integration_test.go
│   │   │   └── knapsackpro_test.go
│   │   ├── kontent/
│   │   │   ├── kontent.go
│   │   │   ├── kontent_integration_test.go
│   │   │   └── kontent_test.go
│   │   ├── kraken/
│   │   │   ├── kraken.go
│   │   │   ├── kraken_integration_test.go
│   │   │   └── kraken_test.go
│   │   ├── kucoin/
│   │   │   ├── kucoin.go
│   │   │   ├── kucoin_integration_test.go
│   │   │   └── kucoin_test.go
│   │   ├── kylas/
│   │   │   ├── kylas.go
│   │   │   ├── kylas_integration_test.go
│   │   │   └── kylas_test.go
│   │   ├── langfuse/
│   │   │   ├── langfuse.go
│   │   │   ├── langfuse_integration_test.go
│   │   │   └── langfuse_test.go
│   │   ├── langsmith/
│   │   │   ├── langsmith.go
│   │   │   ├── langsmith_integration_test.go
│   │   │   └── langsmith_test.go
│   │   ├── languagelayer/
│   │   │   ├── languagelayer.go
│   │   │   ├── languagelayer_integration_test.go
│   │   │   └── languagelayer_test.go
│   │   ├── larksuite/
│   │   │   ├── larksuite.go
│   │   │   ├── larksuite_integration_test.go
│   │   │   └── larksuite_test.go
│   │   ├── larksuiteapikey/
│   │   │   ├── larksuiteapikey.go
│   │   │   ├── larksuiteapikey_integration_test.go
│   │   │   └── larksuiteapikey_test.go
│   │   ├── launchdarkly/
│   │   │   ├── launchdarkly.go
│   │   │   ├── launchdarkly_integration_test.go
│   │   │   └── launchdarkly_test.go
│   │   ├── ldap/
│   │   │   ├── ldap.go
│   │   │   ├── ldap_integration_test.go
│   │   │   └── ldap_test.go
│   │   ├── leadfeeder/
│   │   │   ├── leadfeeder.go
│   │   │   ├── leadfeeder_integration_test.go
│   │   │   └── leadfeeder_test.go
│   │   ├── lemlist/
│   │   │   ├── lemlist.go
│   │   │   ├── lemlist_integration_test.go
│   │   │   └── lemlist_test.go
│   │   ├── lemonsqueezy/
│   │   │   ├── lemonsqueezy.go
│   │   │   ├── lemonsqueezy_integration_test.go
│   │   │   └── lemonsqueezy_test.go
│   │   ├── lendflow/
│   │   │   ├── lendflow.go
│   │   │   ├── lendflow_integration_test.go
│   │   │   └── lendflow_test.go
│   │   ├── lessannoyingcrm/
│   │   │   ├── lessannoyingcrm.go
│   │   │   ├── lessannoyingcrm_integration_test.go
│   │   │   └── lessannoyingcrm_test.go
│   │   ├── lexigram/
│   │   │   ├── lexigram.go
│   │   │   ├── lexigram_integration_test.go
│   │   │   └── lexigram_test.go
│   │   ├── linearapi/
│   │   │   ├── linearapi.go
│   │   │   ├── linearapi_integration_test.go
│   │   │   └── linearapi_test.go
│   │   ├── linemessaging/
│   │   │   ├── linemessaging.go
│   │   │   ├── linemessaging_integration_test.go
│   │   │   └── linemessaging_test.go
│   │   ├── linenotify/
│   │   │   ├── linenotify.go
│   │   │   ├── linenotify_integration_test.go
│   │   │   └── linenotify_test.go
│   │   ├── linkpreview/
│   │   │   ├── linkpreview.go
│   │   │   ├── linkpreview_integration_test.go
│   │   │   └── linkpreview_test.go
│   │   ├── liveagent/
│   │   │   ├── liveagent.go
│   │   │   ├── liveagent_integration_test.go
│   │   │   └── liveagent_test.go
│   │   ├── livestorm/
│   │   │   ├── livestorm.go
│   │   │   ├── livestorm_integration_test.go
│   │   │   └── livestorm_test.go
│   │   ├── loadmill/
│   │   │   ├── loadmill.go
│   │   │   ├── loadmill_integration_test.go
│   │   │   └── loadmill_test.go
│   │   ├── lob/
│   │   │   ├── lob.go
│   │   │   ├── lob_integration_test.go
│   │   │   └── lob_test.go
│   │   ├── locationiq/
│   │   │   ├── locationiq.go
│   │   │   ├── locationiq_integration_test.go
│   │   │   └── locationiq_test.go
│   │   ├── loggly/
│   │   │   ├── loggly.go
│   │   │   ├── loggly_integration_test.go
│   │   │   └── loggly_test.go
│   │   ├── loginradius/
│   │   │   ├── loginradius.go
│   │   │   ├── loginradius_integration_test.go
│   │   │   └── loginradius_test.go
│   │   ├── logzio/
│   │   │   ├── logzio.go
│   │   │   ├── logzio_integration_test.go
│   │   │   └── logzio_test.go
│   │   ├── lokalisetoken/
│   │   │   ├── lokalisetoken.go
│   │   │   ├── lokalisetoken_integration_test.go
│   │   │   └── lokalisetoken_test.go
│   │   ├── loyverse/
│   │   │   ├── loyverse.go
│   │   │   ├── loyverse_integration_test.go
│   │   │   └── loyverse_test.go
│   │   ├── lunchmoney/
│   │   │   ├── lunchmoney.go
│   │   │   ├── lunchmoney_integration_test.go
│   │   │   └── lunchmoney_test.go
│   │   ├── luno/
│   │   │   ├── luno.go
│   │   │   ├── luno_integration_test.go
│   │   │   └── luno_test.go
│   │   ├── m3o/
│   │   │   ├── m3o.go
│   │   │   ├── m3o_integration_test.go
│   │   │   └── m3o_test.go
│   │   ├── madkudu/
│   │   │   ├── madkudu.go
│   │   │   ├── madkudu_integration_test.go
│   │   │   └── madkudu_test.go
│   │   ├── magicbell/
│   │   │   ├── magicbell.go
│   │   │   ├── magicbell_integration_test.go
│   │   │   └── magicbell_test.go
│   │   ├── magnetic/
│   │   │   ├── magnetic.go
│   │   │   ├── magnetic_integration_test.go
│   │   │   └── magnetic_test.go
│   │   ├── mailboxlayer/
│   │   │   ├── mailboxlayer.go
│   │   │   ├── mailboxlayer_integration_test.go
│   │   │   └── mailboxlayer_test.go
│   │   ├── mailchimp/
│   │   │   ├── mailchimp.go
│   │   │   ├── mailchimp_integration_test.go
│   │   │   └── mailchimp_test.go
│   │   ├── mailerlite/
│   │   │   ├── mailerlite.go
│   │   │   ├── mailerlite_integration_test.go
│   │   │   └── mailerlite_test.go
│   │   ├── mailgun/
│   │   │   ├── mailgun.go
│   │   │   ├── mailgun_integration_test.go
│   │   │   └── mailgun_test.go
│   │   ├── mailjetbasicauth/
│   │   │   ├── mailjetbasicauth.go
│   │   │   ├── mailjetbasicauth_integration_test.go
│   │   │   └── mailjetbasicauth_test.go
│   │   ├── mailjetsms/
│   │   │   ├── mailjetsms.go
│   │   │   ├── mailjetsms_integration_test.go
│   │   │   └── mailjetsms_test.go
│   │   ├── mailmodo/
│   │   │   ├── mailmodo.go
│   │   │   ├── mailmodo_integration_test.go
│   │   │   └── mailmodo_test.go
│   │   ├── mailsac/
│   │   │   ├── mailsac.go
│   │   │   ├── mailsac_integration_test.go
│   │   │   └── mailsac_test.go
│   │   ├── mandrill/
│   │   │   ├── mandrill.go
│   │   │   ├── mandrill_integration_test.go
│   │   │   └── mandrill_test.go
│   │   ├── manifest/
│   │   │   ├── manifest.go
│   │   │   ├── manifest_integration_test.go
│   │   │   └── manifest_test.go
│   │   ├── mapbox/
│   │   │   ├── mapbox.go
│   │   │   ├── mapbox_integration_test.go
│   │   │   └── mapbox_test.go
│   │   ├── mapquest/
│   │   │   ├── mapquest.go
│   │   │   ├── mapquest_integration_test.go
│   │   │   └── mapquest_test.go
│   │   ├── marketstack/
│   │   │   ├── marketstack.go
│   │   │   ├── marketstack_integration_test.go
│   │   │   └── marketstack_test.go
│   │   ├── mattermostpersonaltoken/
│   │   │   ├── mattermostpersonaltoken.go
│   │   │   ├── mattermostpersonaltoken_integration_test.go
│   │   │   └── mattermostpersonaltoken_test.go
│   │   ├── mavenlink/
│   │   │   ├── mavenlink.go
│   │   │   ├── mavenlink_integration_test.go
│   │   │   └── mavenlink_test.go
│   │   ├── maxmindlicense/
│   │   │   ├── v1/
│   │   │   │   ├── maxmindlicense.go
│   │   │   │   ├── maxmindlicense_integration_test.go
│   │   │   │   └── maxmindlicense_test.go
│   │   │   └── v2/
│   │   │       ├── maxmindlicense_v2.go
│   │   │       ├── maxmindlicense_v2_integration_test.go
│   │   │       └── maxmindlicense_v2_test.go
│   │   ├── meaningcloud/
│   │   │   ├── meaningcloud.go
│   │   │   ├── meaningcloud_integration_test.go
│   │   │   └── meaningcloud_test.go
│   │   ├── mediastack/
│   │   │   ├── mediastack.go
│   │   │   ├── mediastack_integration_test.go
│   │   │   └── mediastack_test.go
│   │   ├── meistertask/
│   │   │   ├── meistertask.go
│   │   │   ├── meistertask_integration_test.go
│   │   │   └── meistertask_test.go
│   │   ├── meraki/
│   │   │   ├── meraki.go
│   │   │   ├── meraki_integration_test.go
│   │   │   └── meraki_test.go
│   │   ├── mesibo/
│   │   │   ├── mesibo.go
│   │   │   ├── mesibo_integration_test.go
│   │   │   └── mesibo_test.go
│   │   ├── messagebird/
│   │   │   ├── messagebird.go
│   │   │   ├── messagebird_integration_test.go
│   │   │   └── messagebird_test.go
│   │   ├── metaapi/
│   │   │   ├── metaapi.go
│   │   │   ├── metaapi_integration_test.go
│   │   │   └── metaapi_test.go
│   │   ├── metabase/
│   │   │   ├── metabase.go
│   │   │   ├── metabase_integration_test.go
│   │   │   └── metabase_test.go
│   │   ├── metrilo/
│   │   │   ├── metrilo.go
│   │   │   ├── metrilo_integration_test.go
│   │   │   └── metrilo_test.go
│   │   ├── microsoftteamswebhook/
│   │   │   ├── microsoftteamswebhook.go
│   │   │   ├── microsoftteamswebhook_integration_test.go
│   │   │   └── microsoftteamswebhook_test.go
│   │   ├── mindmeister/
│   │   │   ├── mindmeister.go
│   │   │   ├── mindmeister_integration_test.go
│   │   │   └── mindmeister_test.go
│   │   ├── miro/
│   │   │   ├── miro.go
│   │   │   ├── miro_integration_test.go
│   │   │   └── miro_test.go
│   │   ├── mite/
│   │   │   ├── mite.go
│   │   │   ├── mite_integration_test.go
│   │   │   └── mite_test.go
│   │   ├── mixmax/
│   │   │   ├── mixmax.go
│   │   │   ├── mixmax_integration_test.go
│   │   │   └── mixmax_test.go
│   │   ├── mixpanel/
│   │   │   ├── mixpanel.go
│   │   │   ├── mixpanel_integration_test.go
│   │   │   └── mixpanel_test.go
│   │   ├── mockaroo/
│   │   │   ├── mockaroo.go
│   │   │   ├── mockaroo_integration_test.go
│   │   │   └── mockaroo_test.go
│   │   ├── moderation/
│   │   │   ├── moderation.go
│   │   │   ├── moderation_integration_test.go
│   │   │   └── moderation_test.go
│   │   ├── monday/
│   │   │   ├── monday.go
│   │   │   ├── monday_integration_test.go
│   │   │   └── monday_test.go
│   │   ├── mongodb/
│   │   │   ├── mongodb.go
│   │   │   ├── mongodb_integration_test.go
│   │   │   └── mongodb_test.go
│   │   ├── monkeylearn/
│   │   │   ├── monkeylearn.go
│   │   │   ├── monkeylearn_integration_test.go
│   │   │   └── monkeylearn_test.go
│   │   ├── moonclerk/
│   │   │   ├── moonclerk.go
│   │   │   ├── moonclerk_integration_test.go
│   │   │   └── moonclerk_test.go
│   │   ├── moosend/
│   │   │   ├── moosend.go
│   │   │   ├── moosend_integration_test.go
│   │   │   └── moosend_test.go
│   │   ├── moralis/
│   │   │   ├── moralis.go
│   │   │   ├── moralis_integration_test.go
│   │   │   └── moralis_test.go
│   │   ├── mrticktock/
│   │   │   ├── mrticktock.go
│   │   │   ├── mrticktock_test.go
│   │   │   └── mrticktok_integration_test.go
│   │   ├── multi_part_credential_provider.go
│   │   ├── multi_part_credential_provider_test.go
│   │   ├── mux/
│   │   │   ├── mux.go
│   │   │   ├── mux_integration_test.go
│   │   │   └── mux_test.go
│   │   ├── myfreshworks/
│   │   │   ├── myfreshworks.go
│   │   │   ├── myfreshworks_integration_test.go
│   │   │   └── myfreshworks_test.go
│   │   ├── myintervals/
│   │   │   ├── myintervals.go
│   │   │   ├── myintervals_integration_test.go
│   │   │   └── myintervals_test.go
│   │   ├── nasdaqdatalink/
│   │   │   ├── nasdaqdatalink.go
│   │   │   ├── nasdaqdatalink_integration_test.go
│   │   │   └── nasdaqdatalink_test.go
│   │   ├── nethunt/
│   │   │   ├── nethunt.go
│   │   │   ├── nethunt_integration_test.go
│   │   │   └── nethunt_test.go
│   │   ├── netlify/
│   │   │   ├── v1/
│   │   │   │   ├── netlify_v1.go
│   │   │   │   ├── netlify_v1_integration_test.go
│   │   │   │   └── netlify_v1_test.go
│   │   │   └── v2/
│   │   │       ├── netlify_v2.go
│   │   │       ├── netlify_v2_integration_test.go
│   │   │       └── netlify_v2_test.go
│   │   ├── netsuite/
│   │   │   ├── netsuite.go
│   │   │   ├── netsuite_integration_test.go
│   │   │   └── netsuite_test.go
│   │   ├── neutrinoapi/
│   │   │   ├── neutrinoapi.go
│   │   │   ├── neutrinoapi_integration_test.go
│   │   │   └── neutrinoapi_test.go
│   │   ├── newrelicpersonalapikey/
│   │   │   ├── newrelicpersonalapikey.go
│   │   │   ├── newrelicpersonalapikey_integration_test.go
│   │   │   └── newrelicpersonalapikey_test.go
│   │   ├── newsapi/
│   │   │   ├── newsapi.go
│   │   │   ├── newsapi_integration_test.go
│   │   │   └── newsapi_test.go
│   │   ├── newscatcher/
│   │   │   ├── newscatcher.go
│   │   │   ├── newscatcher_integration_test.go
│   │   │   └── newscatcher_test.go
│   │   ├── nexmoapikey/
│   │   │   ├── nexmoapikey.go
│   │   │   ├── nexmoapikey_integration_test.go
│   │   │   └── nexmoapikey_test.go
│   │   ├── nftport/
│   │   │   ├── nftport.go
│   │   │   ├── nftport_integration_test.go
│   │   │   └── nftport_test.go
│   │   ├── ngc/
│   │   │   ├── ngc.go
│   │   │   ├── ngc_integration_test.go
│   │   │   └── ngc_test.go
│   │   ├── ngrok/
│   │   │   ├── ngrok.go
│   │   │   ├── ngrok_integration_test.go
│   │   │   └── ngrok_test.go
│   │   ├── nicereply/
│   │   │   ├── nicereply.go
│   │   │   ├── nicereply_integration_test.go
│   │   │   └── nicereply_test.go
│   │   ├── nightfall/
│   │   │   ├── nightfall.go
│   │   │   ├── nightfall_integration_test.go
│   │   │   └── nightfall_test.go
│   │   ├── nimble/
│   │   │   ├── nimble.go
│   │   │   ├── nimble_integration_test.go
│   │   │   └── nimble_test.go
│   │   ├── noticeable/
│   │   │   ├── noticeable.go
│   │   │   ├── noticeable_integration_test.go
│   │   │   └── noticeable_test.go
│   │   ├── notion/
│   │   │   ├── notion.go
│   │   │   ├── notion_integration_test.go
│   │   │   └── notion_test.go
│   │   ├── nozbeteams/
│   │   │   ├── nozbeteams.go
│   │   │   ├── nozbeteams_integration_test.go
│   │   │   └── nozbeteams_test.go
│   │   ├── npmtoken/
│   │   │   ├── npmtoken.go
│   │   │   ├── npmtoken_integration_test.go
│   │   │   └── npmtoken_test.go
│   │   ├── npmtokenv2/
│   │   │   ├── npmtokenv2.go
│   │   │   ├── npmtokenv2_integration_test.go
│   │   │   └── npmtokenv2_test.go
│   │   ├── nugetapikey/
│   │   │   ├── nugetapikey.go
│   │   │   ├── nugetapikey_integration_test.go
│   │   │   └── nugetapikey_test.go
│   │   ├── numverify/
│   │   │   ├── numverify.go
│   │   │   ├── numverify_integration_test.go
│   │   │   └── numverify_test.go
│   │   ├── nutritionix/
│   │   │   ├── nutritionix.go
│   │   │   ├── nutritionix_integration_test.go
│   │   │   └── nutritionix_test.go
│   │   ├── nvapi/
│   │   │   ├── nvapi.go
│   │   │   ├── nvapi_integration_test.go
│   │   │   └── nvapi_test.go
│   │   ├── nylas/
│   │   │   ├── nylas.go
│   │   │   ├── nylas_integration_test.go
│   │   │   └── nylas_test.go
│   │   ├── oanda/
│   │   │   ├── oanda.go
│   │   │   ├── oanda_integration_test.go
│   │   │   └── oanda_test.go
│   │   ├── okta/
│   │   │   ├── okta.go
│   │   │   ├── okta_integration_test.go
│   │   │   └── okta_test.go
│   │   ├── omnisend/
│   │   │   ├── omnisend.go
│   │   │   ├── omnisend_integration_test.go
│   │   │   └── omnisend_test.go
│   │   ├── onedesk/
│   │   │   ├── onedesk.go
│   │   │   ├── onedesk_integration_test.go
│   │   │   └── onedesk_test.go
│   │   ├── onelogin/
│   │   │   ├── onelogin.go
│   │   │   ├── onelogin_integration_test.go
│   │   │   └── onelogin_test.go
│   │   ├── onepagecrm/
│   │   │   ├── onepagecrm.go
│   │   │   ├── onepagecrm_integration_test.go
│   │   │   └── onepagecrm_test.go
│   │   ├── onesignal/
│   │   │   ├── onesignal.go
│   │   │   ├── onesignal_integration_test.go
│   │   │   └── onesignal_test.go
│   │   ├── onfleet/
│   │   │   ├── onfleet.go
│   │   │   ├── onfleet_integration_test.go
│   │   │   └── onfleet_test.go
│   │   ├── oopspam/
│   │   │   ├── oopspam.go
│   │   │   ├── oopspam_integration_test.go
│   │   │   └── oopspam_test.go
│   │   ├── openai/
│   │   │   ├── openai.go
│   │   │   ├── openai_integration_test.go
│   │   │   └── openai_test.go
│   │   ├── openaiadmin/
│   │   │   ├── openaiadmin.go
│   │   │   ├── openaiadmin_integration_test.go
│   │   │   └── openaiadmin_test.go
│   │   ├── opencagedata/
│   │   │   ├── opencagedata.go
│   │   │   ├── opencagedata_integration_test.go
│   │   │   └── opencagedata_test.go
│   │   ├── openuv/
│   │   │   ├── openuv.go
│   │   │   ├── openuv_integration_test.go
│   │   │   └── openuv_test.go
│   │   ├── openvpn/
│   │   │   ├── openvpn.go
│   │   │   ├── openvpn_integration_test.go
│   │   │   └── openvpn_test.go
│   │   ├── openweather/
│   │   │   ├── openweather.go
│   │   │   ├── openweather_integration_test.go
│   │   │   └── openweather_test.go
│   │   ├── opsgenie/
│   │   │   ├── opsgenie.go
│   │   │   ├── opsgenie_integration_test.go
│   │   │   └── opsgenie_test.go
│   │   ├── optimizely/
│   │   │   ├── optimizely.go
│   │   │   ├── optimizely_integration_test.go
│   │   │   └── optimizely_test.go
│   │   ├── overloop/
│   │   │   ├── overloop.go
│   │   │   ├── overloop_integration_test.go
│   │   │   └── overloop_test.go
│   │   ├── owlbot/
│   │   │   ├── owlbot.go
│   │   │   ├── owlbot_integration_test.go
│   │   │   └── owlbot_test.go
│   │   ├── packagecloud/
│   │   │   ├── packagecloud.go
│   │   │   ├── packagecloud_integration_test.go
│   │   │   └── packagecloud_test.go
│   │   ├── pagarme/
│   │   │   ├── pagarme.go
│   │   │   ├── pagarme_integration_test.go
│   │   │   └── pagarme_test.go
│   │   ├── pagerdutyapikey/
│   │   │   ├── pagerdutyapikey.go
│   │   │   ├── pagerdutyapikey_integration_test.go
│   │   │   └── pagerdutyapikey_test.go
│   │   ├── pandadoc/
│   │   │   ├── pandadoc.go
│   │   │   ├── pandadoc_integration_test.go
│   │   │   └── pandadoc_test.go
│   │   ├── pandascore/
│   │   │   ├── pandascore.go
│   │   │   ├── pandascore_integration_test.go
│   │   │   └── pandascore_test.go
│   │   ├── paperform/
│   │   │   ├── paperform.go
│   │   │   ├── paperform_integration_test.go
│   │   │   └── paperform_test.go
│   │   ├── paralleldots/
│   │   │   ├── paralleldots.go
│   │   │   ├── paralleldots_integration_test.go
│   │   │   └── paralleldots_test.go
│   │   ├── parsehub/
│   │   │   ├── parsehub.go
│   │   │   ├── parsehub_integration_test.go
│   │   │   └── parsehub_test.go
│   │   ├── parsers/
│   │   │   ├── parsers.go
│   │   │   ├── parsers_integration_test.go
│   │   │   └── parsers_test.go
│   │   ├── parseur/
│   │   │   ├── parseur.go
│   │   │   ├── parseur_integration_test.go
│   │   │   └── parseur_test.go
│   │   ├── partnerstack/
│   │   │   ├── partnerstack.go
│   │   │   ├── partnerstack_integration_test.go
│   │   │   └── partnerstack_test.go
│   │   ├── pastebin/
│   │   │   ├── pastebin.go
│   │   │   ├── pastebin_integration_test.go
│   │   │   └── pastebin_test.go
│   │   ├── paydirtapp/
│   │   │   ├── paydirtapp.go
│   │   │   ├── paydirtapp_integration_test.go
│   │   │   └── paydirtapp_test.go
│   │   ├── paymoapp/
│   │   │   ├── paymoapp.go
│   │   │   ├── paymoapp_integration_test.go
│   │   │   └── paymoapp_test.go
│   │   ├── paymongo/
│   │   │   ├── paymongo.go
│   │   │   ├── paymongo_integration_test.go
│   │   │   └── paymongo_test.go
│   │   ├── paypaloauth/
│   │   │   ├── paypaloauth.go
│   │   │   ├── paypaloauth_integration_test.go
│   │   │   └── paypaloauth_test.go
│   │   ├── paystack/
│   │   │   ├── paystack.go
│   │   │   ├── paystack_integration_test.go
│   │   │   └── paystack_test.go
│   │   ├── pdflayer/
│   │   │   ├── pdflayer.go
│   │   │   ├── pdflayer_integration_test.go
│   │   │   └── pdflayer_test.go
│   │   ├── pdfshift/
│   │   │   ├── pdfshift.go
│   │   │   ├── pdfshift_integration_test.go
│   │   │   └── pdfshift_test.go
│   │   ├── peopledatalabs/
│   │   │   ├── peopledatalabs.go
│   │   │   ├── peopledatalabs_integration_test.go
│   │   │   └── peopledatalabs_test.go
│   │   ├── pepipost/
│   │   │   ├── pepipost.go
│   │   │   ├── pepipost_integration_test.go
│   │   │   └── pepipost_test.go
│   │   ├── percy/
│   │   │   ├── percy.go
│   │   │   ├── percy_integration_test.go
│   │   │   └── percy_test.go
│   │   ├── photoroom/
│   │   │   ├── photoroom.go
│   │   │   ├── photoroom_integration_test.go
│   │   │   └── photoroom_test.go
│   │   ├── phraseaccesstoken/
│   │   │   ├── phraseaccesstoken.go
│   │   │   ├── phraseaccesstoken_integration_test.go
│   │   │   └── phraseaccesstoken_test.go
│   │   ├── pinata/
│   │   │   ├── pinata.go
│   │   │   ├── pinata_integration_test.go
│   │   │   └── pinata_test.go
│   │   ├── pipedream/
│   │   │   ├── pipedream.go
│   │   │   ├── pipedream_integration_test.go
│   │   │   └── pipedream_test.go
│   │   ├── pipedrive/
│   │   │   ├── pipedrive.go
│   │   │   ├── pipedrive_integration_test.go
│   │   │   └── pipedrive_test.go
│   │   ├── pivotaltracker/
│   │   │   ├── pivotaltracker.go
│   │   │   ├── pivotaltracker_integration_test.go
│   │   │   └── pivotaltracker_test.go
│   │   ├── pixabay/
│   │   │   ├── pixabay.go
│   │   │   ├── pixabay_integration_test.go
│   │   │   └── pixabay_test.go
│   │   ├── plaidkey/
│   │   │   ├── plaidkey.go
│   │   │   ├── plaidkey_integration_test.go
│   │   │   └── plaidkey_test.go
│   │   ├── planetscale/
│   │   │   ├── planetscale.go
│   │   │   ├── planetscale_integration_test.go
│   │   │   └── planetscale_test.go
│   │   ├── planetscaledb/
│   │   │   ├── planetscaledb.go
│   │   │   ├── planetscaledb_integration_test.go
│   │   │   └── planetscaledb_test.go
│   │   ├── planviewleankit/
│   │   │   ├── planviewleankit.go
│   │   │   ├── planviewleankit_integration_test.go
│   │   │   └── planviewleankit_test.go
│   │   ├── planyo/
│   │   │   ├── planyo.go
│   │   │   ├── planyo_integration_test.go
│   │   │   └── planyo_test.go
│   │   ├── plivo/
│   │   │   ├── plivo.go
│   │   │   ├── plivo_integration_test.go
│   │   │   └── plivo_test.go
│   │   ├── podio/
│   │   │   ├── podio.go
│   │   │   ├── podio_integration_test.go
│   │   │   └── podio_test.go
│   │   ├── pollsapi/
│   │   │   ├── pollsapi.go
│   │   │   ├── pollsapi_integration_test.go
│   │   │   └── pollsapi_test.go
│   │   ├── poloniex/
│   │   │   ├── poloniex.go
│   │   │   ├── poloniex_integration_test.go
│   │   │   └── poloniex_test.go
│   │   ├── polygon/
│   │   │   ├── polygon.go
│   │   │   ├── polygon_integration_test.go
│   │   │   └── polygon_test.go
│   │   ├── portainer/
│   │   │   ├── portainer.go
│   │   │   ├── portainer_integration_test.go
│   │   │   └── portainer_test.go
│   │   ├── portainertoken/
│   │   │   ├── portainertoken.go
│   │   │   ├── portainertoken_integration_test.go
│   │   │   └── portainertoken_test.go
│   │   ├── positionstack/
│   │   │   ├── positionstack.go
│   │   │   ├── positionstack_integration_test.go
│   │   │   └── positionstack_test.go
│   │   ├── postageapp/
│   │   │   ├── postageapp.go
│   │   │   ├── postageapp_integration_test.go
│   │   │   └── postageapp_test.go
│   │   ├── postbacks/
│   │   │   ├── postbacks.go
│   │   │   ├── postbacks_integration_test.go
│   │   │   └── postbacks_test.go
│   │   ├── postgres/
│   │   │   ├── postgres.go
│   │   │   ├── postgres_integration_test.go
│   │   │   └── postgres_test.go
│   │   ├── posthog/
│   │   │   ├── posthog.go
│   │   │   ├── posthog_integration_test.go
│   │   │   └── posthog_test.go
│   │   ├── postman/
│   │   │   ├── postman.go
│   │   │   ├── postman_integration_test.go
│   │   │   └── postman_test.go
│   │   ├── postmark/
│   │   │   ├── postmark.go
│   │   │   ├── postmark_integration_test.go
│   │   │   └── postmark_test.go
│   │   ├── powrbot/
│   │   │   ├── powrbot.go
│   │   │   ├── powrbot_integration_test.go
│   │   │   └── powrbot_test.go
│   │   ├── prefect/
│   │   │   ├── prefect.go
│   │   │   ├── prefect_integration_test.go
│   │   │   └── prefect_test.go
│   │   ├── privacy/
│   │   │   ├── privacy.go
│   │   │   ├── privacy_integration_test.go
│   │   │   └── privacy_test.go
│   │   ├── privatekey/
│   │   │   ├── cracker.go
│   │   │   ├── cracker_test.go
│   │   │   ├── fingerprint.go
│   │   │   ├── list.txt
│   │   │   ├── normalize.go
│   │   │   ├── privatekey.go
│   │   │   ├── privatekey_integration_test.go
│   │   │   ├── privatekey_test.go
│   │   │   ├── ssh_integration.go
│   │   │   └── ssh_integration_test.go
│   │   ├── prodpad/
│   │   │   ├── prodpad.go
│   │   │   ├── prodpad_integration_test.go
│   │   │   └── prodpad_test.go
│   │   ├── prospectcrm/
│   │   │   ├── prospectcrm.go
│   │   │   ├── prospectcrm_integration_test.go
│   │   │   └── prospectcrm_test.go
│   │   ├── protocolsio/
│   │   │   ├── protocolsio.go
│   │   │   ├── protocolsio_integration_test.go
│   │   │   └── protocolsio_test.go
│   │   ├── proxycrawl/
│   │   │   ├── proxycrawl.go
│   │   │   ├── proxycrawl_integration_test.go
│   │   │   └── proxycrawl_test.go
│   │   ├── pubnubpublishkey/
│   │   │   ├── pubnubpublishkey.go
│   │   │   ├── pubnubpublishkey_integration_test.go
│   │   │   └── pubnubpublishkey_test.go
│   │   ├── pubnubsubscriptionkey/
│   │   │   ├── pubnubsubscriptionkey.go
│   │   │   ├── pubnubsubscriptionkey_integration_test.go
│   │   │   └── pubnubsubscriptionkey_test.go
│   │   ├── pulumi/
│   │   │   ├── pulumi.go
│   │   │   ├── pulumi_integration_test.go
│   │   │   └── pulumi_test.go
│   │   ├── purestake/
│   │   │   ├── purestake.go
│   │   │   ├── purestake_integration_test.go
│   │   │   └── purestake_test.go
│   │   ├── pushbulletapikey/
│   │   │   ├── pushbulletapikey.go
│   │   │   ├── pushbulletapikey_integration_test.go
│   │   │   └── pushbulletapikey_test.go
│   │   ├── pusherchannelkey/
│   │   │   ├── pusherchannelkey.go
│   │   │   ├── pusherchannelkey_integration_test.go
│   │   │   └── pusherchannelkey_test.go
│   │   ├── pypi/
│   │   │   ├── pypi.go
│   │   │   ├── pypi_integration_test.go
│   │   │   └── pypi_test.go
│   │   ├── qase/
│   │   │   ├── qase.go
│   │   │   ├── qase_integration_test.go
│   │   │   └── qase_test.go
│   │   ├── qualaroo/
│   │   │   ├── qualaroo.go
│   │   │   ├── qualaroo_integration_test.go
│   │   │   └── qualaroo_test.go
│   │   ├── qubole/
│   │   │   ├── qubole.go
│   │   │   ├── qubole_integration_test.go
│   │   │   └── qubole_test.go
│   │   ├── rabbitmq/
│   │   │   ├── rabbitmq.go
│   │   │   ├── rabbitmq_integration_test.go
│   │   │   └── rabbitmq_test.go
│   │   ├── railwayapp/
│   │   │   ├── railwayapp.go
│   │   │   ├── railwayapp_integration_test.go
│   │   │   └── railwayapp_test.go
│   │   ├── ramp/
│   │   │   ├── ramp.go
│   │   │   ├── ramp_integration_test.go
│   │   │   └── ramp_test.go
│   │   ├── rapidapi/
│   │   │   ├── rapidapi.go
│   │   │   ├── rapidapi_integration_test.go
│   │   │   └── rapidapi_test.go
│   │   ├── raven/
│   │   │   ├── raven.go
│   │   │   ├── raven_integration_test.go
│   │   │   └── raven_test.go
│   │   ├── rawg/
│   │   │   ├── rawg.go
│   │   │   ├── rawg_integration_test.go
│   │   │   └── rawg_test.go
│   │   ├── razorpay/
│   │   │   ├── razorpay.go
│   │   │   ├── razorpay_integration_test.go
│   │   │   └── razorpay_test.go
│   │   ├── reachmail/
│   │   │   ├── reachmail.go
│   │   │   ├── reachmail_integration_test.go
│   │   │   └── reachmail_test.go
│   │   ├── readme/
│   │   │   ├── readme.go
│   │   │   ├── readme_integration_test.go
│   │   │   └── readme_test.go
│   │   ├── reallysimplesystems/
│   │   │   ├── reallysimplesystems.go
│   │   │   ├── reallysimplesystems_integration_test.go
│   │   │   └── reallysimplesystems_test.go
│   │   ├── rebrandly/
│   │   │   ├── rebrandly.go
│   │   │   ├── rebrandly_integration_test.go
│   │   │   └── rebrandly_test.go
│   │   ├── rechargepayments/
│   │   │   ├── rechargepayments.go
│   │   │   ├── rechargepayments_integration_test.go
│   │   │   └── rechargepayments_test.go
│   │   ├── redis/
│   │   │   ├── redis.go
│   │   │   ├── redis_integration_test.go
│   │   │   └── redis_test.go
│   │   ├── refiner/
│   │   │   ├── refiner.go
│   │   │   ├── refiner_integration_test.go
│   │   │   └── refiner_test.go
│   │   ├── rentman/
│   │   │   ├── rentman.go
│   │   │   ├── rentman_integration_test.go
│   │   │   └── rentman_test.go
│   │   ├── repairshopr/
│   │   │   ├── repairshopr.go
│   │   │   ├── repairshopr_integration_test.go
│   │   │   └── repairshopr_test.go
│   │   ├── replicate/
│   │   │   ├── replicate.go
│   │   │   ├── replicate_integration_test.go
│   │   │   └── replicate_test.go
│   │   ├── replyio/
│   │   │   ├── replyio.go
│   │   │   ├── replyio_integration_test.go
│   │   │   └── replyio_test.go
│   │   ├── requestfinance/
│   │   │   ├── requestfinance.go
│   │   │   ├── requestfinance_integration_test.go
│   │   │   └── requestfinance_test.go
│   │   ├── restpackhtmltopdfapi/
│   │   │   ├── restpackhtmltopdfapi.go
│   │   │   ├── restpackhtmltopdfapi_integration_test.go
│   │   │   └── restpackhtmltopdfapi_test.go
│   │   ├── restpackscreenshotapi/
│   │   │   ├── restpackscreenshotapi.go
│   │   │   ├── restpackscreenshotapi_integration_test.go
│   │   │   └── restpackscreenshotapi_test.go
│   │   ├── rev/
│   │   │   ├── rev.go
│   │   │   ├── rev_integration_test.go
│   │   │   └── rev_test.go
│   │   ├── revampcrm/
│   │   │   ├── revampcrm.go
│   │   │   ├── revampcrm_integration_test.go
│   │   │   └── revampcrm_test.go
│   │   ├── ringcentral/
│   │   │   ├── ringcentral.go
│   │   │   ├── ringcentral_integration_test.go
│   │   │   └── ringcentral_test.go
│   │   ├── ritekit/
│   │   │   ├── ritekit.go
│   │   │   ├── ritekit_integration_test.go
│   │   │   └── ritekit_test.go
│   │   ├── roaring/
│   │   │   ├── roaring.go
│   │   │   ├── roaring_integration_test.go
│   │   │   └── roaring_test.go
│   │   ├── robinhoodcrypto/
│   │   │   ├── robinhoodcrypto.go
│   │   │   ├── robinhoodcrypto_integration_test.go
│   │   │   └── robinhoodcrypto_test.go
│   │   ├── rocketreach/
│   │   │   ├── rocketreach.go
│   │   │   ├── rocketreach_integration_test.go
│   │   │   └── rocketreach_test.go
│   │   ├── rootly/
│   │   │   ├── rootly.go
│   │   │   ├── rootly_integration_test.go
│   │   │   └── rootly_test.go
│   │   ├── route4me/
│   │   │   ├── route4me.go
│   │   │   ├── route4me_integration_test.go
│   │   │   └── route4me_test.go
│   │   ├── rownd/
│   │   │   ├── rownd.go
│   │   │   ├── rownd_integration_test.go
│   │   │   └── rownd_test.go
│   │   ├── rubygems/
│   │   │   ├── rubygems.go
│   │   │   ├── rubygems_integration_test.go
│   │   │   └── rubygems_test.go
│   │   ├── runrunit/
│   │   │   ├── runrunit.go
│   │   │   ├── runrunit_integration_test.go
│   │   │   └── runrunit_test.go
│   │   ├── saladcloudapikey/
│   │   │   ├── saladcloudapikey.go
│   │   │   ├── saladcloudapikey_integration_test.go
│   │   │   └── saladcloudapikey_test.go
│   │   ├── salesblink/
│   │   │   ├── salesblink.go
│   │   │   ├── salesblink_integration_test.go
│   │   │   └── salesblink_test.go
│   │   ├── salescookie/
│   │   │   ├── salescookie.go
│   │   │   ├── salescookie_integration_test.go
│   │   │   └── salescookie_test.go
│   │   ├── salesflare/
│   │   │   ├── salesflare.go
│   │   │   ├── salesflare_integration_test.go
│   │   │   └── salesflare_test.go
│   │   ├── salesforce/
│   │   │   ├── salesforce.go
│   │   │   ├── salesforce_integration_test.go
│   │   │   └── salesforce_test.go
│   │   ├── salesforceoauth2/
│   │   │   ├── salesforceoauth2.go
│   │   │   ├── salesforceoauth2_integration_test.go
│   │   │   └── salesforceoauth2_test.go
│   │   ├── salesforcerefreshtoken/
│   │   │   ├── salesforcerefreshtoken.go
│   │   │   ├── salesforcerefreshtoken_integration_test.go
│   │   │   └── salesforcerefreshtoken_test.go
│   │   ├── salesmate/
│   │   │   ├── salesmate.go
│   │   │   ├── salesmate_integration_test.go
│   │   │   └── salesmate_test.go
│   │   ├── sanity/
│   │   │   ├── sanity.go
│   │   │   ├── sanity_integration_test.go
│   │   │   └── sanity_test.go
│   │   ├── satismeterprojectkey/
│   │   │   ├── satismeterprojectkey.go
│   │   │   ├── satismeterprojectkey_integration_test.go
│   │   │   └── satismeterprojectkey_test.go
│   │   ├── satismeterwritekey/
│   │   │   ├── satismeterwritekey.go
│   │   │   ├── satismeterwritekey_integration_test.go
│   │   │   └── satismeterwritekey_test.go
│   │   ├── saucelabs/
│   │   │   ├── saucelabs.go
│   │   │   ├── saucelabs_integration_test.go
│   │   │   └── saucelabs_test.go
│   │   ├── scalewaykey/
│   │   │   ├── scalewaykey.go
│   │   │   ├── scalewaykey_integration_test.go
│   │   │   └── scalewaykey_test.go
│   │   ├── scalr/
│   │   │   ├── scalr.go
│   │   │   ├── scalr_integration_test.go
│   │   │   └── scalr_test.go
│   │   ├── scrapeowl/
│   │   │   ├── scrapeowl.go
│   │   │   ├── scrapeowl_integration_test.go
│   │   │   └── scrapeowl_test.go
│   │   ├── scraperapi/
│   │   │   ├── scraperapi.go
│   │   │   ├── scraperapi_integration_test.go
│   │   │   └── scraperapi_test.go
│   │   ├── scraperbox/
│   │   │   ├── scraperbox.go
│   │   │   ├── scraperbox_integration_test.go
│   │   │   └── scraperbox_test.go
│   │   ├── scrapestack/
│   │   │   ├── scrapestack.go
│   │   │   ├── scrapestack_integration_test.go
│   │   │   └── scrapestack_test.go
│   │   ├── scrapfly/
│   │   │   ├── scrapfly.go
│   │   │   ├── scrapfly_integration_test.go
│   │   │   └── scrapfly_test.go
│   │   ├── scrapingant/
│   │   │   ├── scrapingant.go
│   │   │   ├── scrapingant_integration_test.go
│   │   │   └── scrapingant_test.go
│   │   ├── scrapingbee/
│   │   │   ├── scrapingbee.go
│   │   │   ├── scrapingbee_integration_test.go
│   │   │   └── scrapingbee_test.go
│   │   ├── screenshotapi/
│   │   │   ├── screenshotapi.go
│   │   │   ├── screenshotapi_integration_test.go
│   │   │   └── screenshotapi_test.go
│   │   ├── screenshotlayer/
│   │   │   ├── screenshotlayer.go
│   │   │   ├── screenshotlayer_integration_test.go
│   │   │   └── screenshotlayer_test.go
│   │   ├── scrutinizerci/
│   │   │   ├── scrutinizerci.go
│   │   │   ├── scrutinizerci_integration_test.go
│   │   │   └── scrutinizerci_test.go
│   │   ├── securitytrails/
│   │   │   ├── securitytrails.go
│   │   │   ├── securitytrails_integration_test.go
│   │   │   └── securitytrails_test.go
│   │   ├── segmentapikey/
│   │   │   ├── segmentapikey.go
│   │   │   ├── segmentapikey_integration_test.go
│   │   │   └── segmentapikey_test.go
│   │   ├── selectpdf/
│   │   │   ├── selectpdf.go
│   │   │   ├── selectpdf_integration_test.go
│   │   │   └── selectpdf_test.go
│   │   ├── semaphore/
│   │   │   ├── semaphore.go
│   │   │   ├── semaphore_integration_test.go
│   │   │   └── semaphore_test.go
│   │   ├── sendbird/
│   │   │   ├── sendbird.go
│   │   │   ├── sendbird_integration_test.go
│   │   │   └── sendbird_test.go
│   │   ├── sendbirdorganizationapi/
│   │   │   ├── sendbirdorganizationapi.go
│   │   │   ├── sendbirdorganizationapi_integration_test.go
│   │   │   └── sendbirdorganizationapi_test.go
│   │   ├── sendgrid/
│   │   │   ├── sendgrid.go
│   │   │   ├── sendgrid_integration_test.go
│   │   │   └── sendgrid_test.go
│   │   ├── sendinbluev2/
│   │   │   ├── sendinbluev2.go
│   │   │   ├── sendinbluev2_integration_test.go
│   │   │   └── sendinbluev2_test.go
│   │   ├── sentryorgtoken/
│   │   │   ├── sentryorgtoken.go
│   │   │   ├── sentryorgtoken_integration_test.go
│   │   │   └── sentryorgtoken_test.go
│   │   ├── sentrytoken/
│   │   │   ├── v1/
│   │   │   │   ├── sentrytoken.go
│   │   │   │   ├── sentrytoken_integration_test.go
│   │   │   │   └── sentrytoken_test.go
│   │   │   └── v2/
│   │   │       ├── sentrytoken.go
│   │   │       ├── sentrytoken_integration_test.go
│   │   │       └── sentrytoken_test.go
│   │   ├── serphouse/
│   │   │   ├── serphouse.go
│   │   │   ├── serphouse_integration_test.go
│   │   │   └── serphouse_test.go
│   │   ├── serpstack/
│   │   │   ├── serpstack.go
│   │   │   ├── serpstack_integration_test.go
│   │   │   └── serpstack_test.go
│   │   ├── sheety/
│   │   │   ├── sheety.go
│   │   │   ├── sheety_integration_test.go
│   │   │   └── sheety_test.go
│   │   ├── sherpadesk/
│   │   │   ├── sherpadesk.go
│   │   │   ├── sherpadesk_integration_test.go
│   │   │   └── sherpadesk_test.go
│   │   ├── shipday/
│   │   │   ├── shipday.go
│   │   │   ├── shipday_integration_test.go
│   │   │   └── shipday_test.go
│   │   ├── shodankey/
│   │   │   ├── shodankey.go
│   │   │   ├── shodankey_integration_test.go
│   │   │   └── shodankey_test.go
│   │   ├── shopify/
│   │   │   ├── shopify.go
│   │   │   ├── shopify_integration_test.go
│   │   │   └── shopify_test.go
│   │   ├── shortcut/
│   │   │   ├── shortcut.go
│   │   │   ├── shortcut_integration_test.go
│   │   │   └── shortcut_test.go
│   │   ├── shotstack/
│   │   │   ├── shotstack.go
│   │   │   ├── shotstack_integration_test.go
│   │   │   └── shotstack_test.go
│   │   ├── shutterstock/
│   │   │   ├── shutterstock.go
│   │   │   ├── shutterstock_integration_test.go
│   │   │   └── shutterstock_test.go
│   │   ├── shutterstockoauth/
│   │   │   ├── shutterstockoauth.go
│   │   │   ├── shutterstockoauth_integration_test.go
│   │   │   └── shutterstockoauth_test.go
│   │   ├── signable/
│   │   │   ├── signable.go
│   │   │   ├── signable_integration_test.go
│   │   │   └── signable_test.go
│   │   ├── signalwire/
│   │   │   ├── signalwire.go
│   │   │   ├── signalwire_integration_test.go
│   │   │   └── signalwire_test.go
│   │   ├── signaturit/
│   │   │   ├── signaturit.go
│   │   │   ├── signaturit_integration_test.go
│   │   │   └── signaturit_test.go
│   │   ├── signupgenius/
│   │   │   ├── signupgenius.go
│   │   │   ├── signupgenius_integration_test.go
│   │   │   └── signupgenius_test.go
│   │   ├── sigopt/
│   │   │   ├── sigopt.go
│   │   │   ├── sigopt_integration_test.go
│   │   │   └── sigopt_test.go
│   │   ├── simfin/
│   │   │   ├── simfin.go
│   │   │   ├── simfin_integration_test.go
│   │   │   └── simfin_test.go
│   │   ├── simplesat/
│   │   │   ├── simplesat.go
│   │   │   ├── simplesat_integration_test.go
│   │   │   └── simplesat_test.go
│   │   ├── simplynoted/
│   │   │   ├── simplynoted.go
│   │   │   ├── simplynoted_integration_test.go
│   │   │   └── simplynoted_test.go
│   │   ├── simvoly/
│   │   │   ├── simvoly.go
│   │   │   ├── simvoly_integration_test.go
│   │   │   └── simvoly_test.go
│   │   ├── sinchmessage/
│   │   │   ├── sinchmessage.go
│   │   │   ├── sinchmessage_integration_test.go
│   │   │   └── sinchmessage_test.go
│   │   ├── sirv/
│   │   │   ├── sirv.go
│   │   │   ├── sirv_integration_test.go
│   │   │   └── sirv_test.go
│   │   ├── siteleaf/
│   │   │   ├── siteleaf.go
│   │   │   ├── siteleaf_integration_test.go
│   │   │   └── siteleaf_test.go
│   │   ├── skrappio/
│   │   │   ├── skrappio.go
│   │   │   ├── skrappio_integration_test.go
│   │   │   └── skrappio_test.go
│   │   ├── skybiometry/
│   │   │   ├── skybiometry.go
│   │   │   ├── skybiometry_integration_test.go
│   │   │   └── skybiometry_test.go
│   │   ├── slack/
│   │   │   ├── slack.go
│   │   │   ├── slack_integration_test.go
│   │   │   └── slack_test.go
│   │   ├── slackwebhook/
│   │   │   ├── slackwebhook.go
│   │   │   ├── slackwebhook_integration_test.go
│   │   │   └── slackwebhook_test.go
│   │   ├── smartsheets/
│   │   │   ├── smartsheets.go
│   │   │   ├── smartsheets_integration_test.go
│   │   │   └── smartsheets_test.go
│   │   ├── smartystreets/
│   │   │   ├── smartystreets.go
│   │   │   ├── smartystreets_integration_test.go
│   │   │   └── smartystreets_test.go
│   │   ├── smooch/
│   │   │   ├── smooch.go
│   │   │   ├── smooch_integration_test.go
│   │   │   └── smooch_test.go
│   │   ├── snipcart/
│   │   │   ├── snipcart.go
│   │   │   ├── snipcart_integration_test.go
│   │   │   └── snipcart_test.go
│   │   ├── snowflake/
│   │   │   ├── snowflake.go
│   │   │   ├── snowflake_integration_test.go
│   │   │   └── snowflake_test.go
│   │   ├── snykkey/
│   │   │   ├── snykkey.go
│   │   │   ├── snykkey_integration_test.go
│   │   │   └── snykkey_test.go
│   │   ├── sonarcloud/
│   │   │   ├── sonarcloud.go
│   │   │   ├── sonarcloud_integration_test.go
│   │   │   └── sonarcloud_test.go
│   │   ├── sourcegraph/
│   │   │   ├── sourcegraph.go
│   │   │   ├── sourcegraph_integration_test.go
│   │   │   └── sourcegraph_test.go
│   │   ├── sourcegraphcody/
│   │   │   ├── sourcegraphcody.go
│   │   │   ├── sourcegraphcody_integration_test.go
│   │   │   └── sourcegraphcody_test.go
│   │   ├── sparkpost/
│   │   │   ├── sparkpost.go
│   │   │   ├── sparkpost_integration_test.go
│   │   │   └── sparkpost_test.go
│   │   ├── speechtextai/
│   │   │   ├── speechtextai.go
│   │   │   ├── speechtextai_integration_test.go
│   │   │   └── speechtextai_test.go
│   │   ├── splunkobservabilitytoken/
│   │   │   ├── splunkobservabilitytoken.go
│   │   │   ├── splunkobservabilitytoken_integration_test.go
│   │   │   └── splunkobservabilitytoken_test.go
│   │   ├── spoonacular/
│   │   │   ├── spoonacular.go
│   │   │   ├── spoonacular_integration_test.go
│   │   │   └── spoonacular_test.go
│   │   ├── sportsmonk/
│   │   │   ├── sportsmonk.go
│   │   │   ├── sportsmonk_integration_test.go
│   │   │   └── sportsmonk_test.go
│   │   ├── spotifykey/
│   │   │   ├── spotifykey.go
│   │   │   ├── spotifykey_integration_test.go
│   │   │   └── spotifykey_test.go
│   │   ├── sqlserver/
│   │   │   ├── sqlserver.go
│   │   │   ├── sqlserver_integration_test.go
│   │   │   └── sqlserver_test.go
│   │   ├── square/
│   │   │   ├── square.go
│   │   │   ├── square_integration_test.go
│   │   │   └── square_test.go
│   │   ├── squareapp/
│   │   │   ├── squareapp.go
│   │   │   ├── squareapp_integration_test.go
│   │   │   └── squareapp_test.go
│   │   ├── squarespace/
│   │   │   ├── squarespace.go
│   │   │   ├── squarespace_integration_test.go
│   │   │   └── squarespace_test.go
│   │   ├── squareup/
│   │   │   ├── squareup.go
│   │   │   ├── squareup_integration_test.go
│   │   │   └── squareup_test.go
│   │   ├── sslmate/
│   │   │   ├── sslmate.go
│   │   │   ├── sslmate_integration_test.go
│   │   │   └── sslmate_test.go
│   │   ├── statuscake/
│   │   │   ├── statuscake.go
│   │   │   ├── statuscake_integration_test.go
│   │   │   └── statuscake_test.go
│   │   ├── statuspage/
│   │   │   ├── statuspage.go
│   │   │   ├── statuspage_integration_test.go
│   │   │   └── statuspage_test.go
│   │   ├── statuspal/
│   │   │   ├── statuspal.go
│   │   │   ├── statuspal_integration_test.go
│   │   │   └── statuspal_test.go
│   │   ├── stitchdata/
│   │   │   ├── stitchdata.go
│   │   │   ├── stitchdata_integration_test.go
│   │   │   └── stitchdata_test.go
│   │   ├── stockdata/
│   │   │   ├── stockdata.go
│   │   │   ├── stockdata_integration_test.go
│   │   │   └── stockdata_test.go
│   │   ├── storecove/
│   │   │   ├── storecove.go
│   │   │   ├── storecove_integration_test.go
│   │   │   └── storecove_test.go
│   │   ├── stormboard/
│   │   │   ├── stormboard.go
│   │   │   ├── stormboard_integration_test.go
│   │   │   └── stormboard_test.go
│   │   ├── stormglass/
│   │   │   ├── stormglass.go
│   │   │   ├── stormglass_integration_test.go
│   │   │   └── stormglass_test.go
│   │   ├── storyblok/
│   │   │   ├── storyblok.go
│   │   │   ├── storyblok_integration_test.go
│   │   │   └── storyblok_test.go
│   │   ├── storyblokpersonalaccesstoken/
│   │   │   ├── storyblok.go
│   │   │   ├── storyblok_integration_test.go
│   │   │   └── storyblok_test.go
│   │   ├── storychief/
│   │   │   ├── storychief.go
│   │   │   ├── storychief_integration_test.go
│   │   │   └── storychief_test.go
│   │   ├── strava/
│   │   │   ├── strava.go
│   │   │   ├── strava_integration_test.go
│   │   │   └── strava_test.go
│   │   ├── streak/
│   │   │   ├── streak.go
│   │   │   ├── streak_integration_test.go
│   │   │   └── streak_test.go
│   │   ├── stripe/
│   │   │   ├── stripe.go
│   │   │   ├── stripe_integration_test.go
│   │   │   └── stripe_test.go
│   │   ├── stripepaymentintent/
│   │   │   ├── stripepaymentintent.go
│   │   │   ├── stripepaymentintent_integration_test.go
│   │   │   └── stripepaymentintent_test.go
│   │   ├── stripo/
│   │   │   ├── stripo.go
│   │   │   ├── stripo_integration_test.go
│   │   │   └── stripo_test.go
│   │   ├── stytch/
│   │   │   ├── stytch.go
│   │   │   ├── stytch_integration_test.go
│   │   │   └── stytch_test.go
│   │   ├── sugester/
│   │   │   ├── sugester.go
│   │   │   ├── sugester_integration_test.go
│   │   │   └── sugester_test.go
│   │   ├── sumologickey/
│   │   │   ├── sumologickey.go
│   │   │   ├── sumologickey_integration_test.go
│   │   │   └── sumologickey_test.go
│   │   ├── supabasetoken/
│   │   │   ├── supabasetoken.go
│   │   │   ├── supabasetoken_integration_test.go
│   │   │   └── supabasetoken_test.go
│   │   ├── supernotesapi/
│   │   │   ├── supernotesapi.go
│   │   │   ├── supernotesapi_integration_test.go
│   │   │   └── supernotesapi_test.go
│   │   ├── surveyanyplace/
│   │   │   ├── surveyanyplace.go
│   │   │   ├── surveyanyplace_integration_test.go
│   │   │   └── surveyanyplace_test.go
│   │   ├── surveybot/
│   │   │   ├── surveybot.go
│   │   │   ├── surveybot_integration_test.go
│   │   │   └── surveybot_test.go
│   │   ├── surveysparrow/
│   │   │   ├── surveysparrow.go
│   │   │   ├── surveysparrow_integration_test.go
│   │   │   └── surveysparrow_test.go
│   │   ├── survicate/
│   │   │   ├── survicate.go
│   │   │   ├── survicate_integration_test.go
│   │   │   └── survicate_test.go
│   │   ├── swell/
│   │   │   ├── swell.go
│   │   │   ├── swell_integration_test.go
│   │   │   └── swell_test.go
│   │   ├── swiftype/
│   │   │   ├── swiftype.go
│   │   │   ├── swiftype_integration_test.go
│   │   │   └── swiftype_test.go
│   │   ├── tableau/
│   │   │   ├── tableau.go
│   │   │   ├── tableau_integration_test.go
│   │   │   └── tableau_test.go
│   │   ├── tailscale/
│   │   │   ├── tailscale.go
│   │   │   ├── tailscale_integration_test.go
│   │   │   └── tailscale_test.go
│   │   ├── tallyfy/
│   │   │   ├── tallyfy.go
│   │   │   ├── tallyfy_integration_test.go
│   │   │   └── tallyfy_test.go
│   │   ├── tatumio/
│   │   │   ├── tatumio.go
│   │   │   ├── tatumio_integration_test.go
│   │   │   └── tatumio_test.go
│   │   ├── taxjar/
│   │   │   ├── taxjar.go
│   │   │   ├── taxjar_integration_test.go
│   │   │   └── taxjar_test.go
│   │   ├── teamgate/
│   │   │   ├── teamgate.go
│   │   │   ├── teamgate_integration_test.go
│   │   │   └── teamgate_test.go
│   │   ├── teamworkcrm/
│   │   │   ├── teamworkcrm.go
│   │   │   ├── teamworkcrm_integration_test.go
│   │   │   └── teamworkcrm_test.go
│   │   ├── teamworkdesk/
│   │   │   ├── teamworkdesk.go
│   │   │   ├── teamworkdesk_integration_test.go
│   │   │   └── teamworkdesk_test.go
│   │   ├── teamworkspaces/
│   │   │   ├── teamworkspaces.go
│   │   │   ├── teamworkspaces_integration_test.go
│   │   │   └── teamworkspaces_test.go
│   │   ├── technicalanalysisapi/
│   │   │   ├── technicalanalysisapi.go
│   │   │   ├── technicalanalysisapi_integration_test.go
│   │   │   └── technicalanalysisapi_test.go
│   │   ├── tefter/
│   │   │   ├── tefter.go
│   │   │   ├── tefter_integration_test.go
│   │   │   └── tefter_test.go
│   │   ├── telegrambottoken/
│   │   │   ├── telegrambottoken.go
│   │   │   ├── telegrambottoken_integration_test.go
│   │   │   └── telegrambottoken_test.go
│   │   ├── teletype/
│   │   │   ├── teletype.go
│   │   │   ├── teletype_integration_test.go
│   │   │   └── teletype_test.go
│   │   ├── telnyx/
│   │   │   ├── telnyx.go
│   │   │   ├── telnyx_integration_test.go
│   │   │   └── telnyx_test.go
│   │   ├── terraformcloudpersonaltoken/
│   │   │   ├── terraformcloudpersonaltoken.go
│   │   │   ├── terraformcloudpersonaltoken_integration_test.go
│   │   │   └── terraformcloudpersonaltoken_test.go
│   │   ├── testingbot/
│   │   │   ├── testingbot.go
│   │   │   ├── testingbot_integration_test.go
│   │   │   └── testingbot_test.go
│   │   ├── textmagic/
│   │   │   ├── textmagic.go
│   │   │   ├── textmagic_integration_test.go
│   │   │   └── textmagic_test.go
│   │   ├── theoddsapi/
│   │   │   ├── theoddsapi.go
│   │   │   ├── theoddsapi_integration_test.go
│   │   │   └── theoddsapi_test.go
│   │   ├── thinkific/
│   │   │   ├── thinkific.go
│   │   │   ├── thinkific_integration_test.go
│   │   │   └── thinkific_test.go
│   │   ├── thousandeyes/
│   │   │   ├── thousandeyes.go
│   │   │   ├── thousandeyes_integration_test.go
│   │   │   └── thousandeyes_test.go
│   │   ├── ticketmaster/
│   │   │   ├── ticketmaster.go
│   │   │   ├── ticketmaster_integration_test.go
│   │   │   └── ticketmaster_test.go
│   │   ├── tickettailor/
│   │   │   ├── tickettailor.go
│   │   │   ├── tickettailor_integration_test.go
│   │   │   └── tickettailor_test.go
│   │   ├── tiingo/
│   │   │   ├── tiingo.go
│   │   │   ├── tiingo_integration_test.go
│   │   │   └── tiingo_test.go
│   │   ├── timecamp/
│   │   │   ├── timecamp.go
│   │   │   ├── timecamp_integration_test.go
│   │   │   └── timecamp_test.go
│   │   ├── timezoneapi/
│   │   │   ├── timezoneapi.go
│   │   │   ├── timezoneapi_integration_test.go
│   │   │   └── timezoneapi_test.go
│   │   ├── tineswebhook/
│   │   │   ├── tineswebhook.go
│   │   │   ├── tineswebhook_integration_test.go
│   │   │   └── tineswebhook_test.go
│   │   ├── tly/
│   │   │   ├── tly.go
│   │   │   ├── tly_integration_test.go
│   │   │   └── tly_test.go
│   │   ├── tmetric/
│   │   │   ├── tmetric.go
│   │   │   ├── tmetric_integration_test.go
│   │   │   └── tmetric_test.go
│   │   ├── todoist/
│   │   │   ├── todoist.go
│   │   │   ├── todoist_integration_test.go
│   │   │   └── todoist_test.go
│   │   ├── toggltrack/
│   │   │   ├── toggltrack.go
│   │   │   ├── toggltrack_integration_test.go
│   │   │   └── toggltrack_test.go
│   │   ├── tokeet/
│   │   │   ├── tokeet.go
│   │   │   ├── tokeet_integration_test.go
│   │   │   └── tokeet_test.go
│   │   ├── tomorrowio/
│   │   │   ├── tomorrowio.go
│   │   │   ├── tomorrowio_integration_test.go
│   │   │   └── tomorrowio_test.go
│   │   ├── tomtom/
│   │   │   ├── tomtom.go
│   │   │   ├── tomtom_integration_test.go
│   │   │   └── tomtom_test.go
│   │   ├── tradier/
│   │   │   ├── tradier.go
│   │   │   ├── tradier_integration_test.go
│   │   │   └── tradier_test.go
│   │   ├── transferwise/
│   │   │   ├── transferwise.go
│   │   │   ├── transferwise_integration_test.go
│   │   │   └── transferwise_test.go
│   │   ├── travelpayouts/
│   │   │   ├── travelpayouts.go
│   │   │   ├── travelpayouts_integration_test.go
│   │   │   └── travelpayouts_test.go
│   │   ├── travisci/
│   │   │   ├── travisci.go
│   │   │   ├── travisci_integration_test.go
│   │   │   └── travisci_test.go
│   │   ├── trelloapikey/
│   │   │   ├── trelloapikey.go
│   │   │   ├── trelloapikey_integration_test.go
│   │   │   └── trelloapikey_test.go
│   │   ├── tru/
│   │   │   ├── tru.go
│   │   │   ├── tru_integration_test.go
│   │   │   └── tru_test.go
│   │   ├── trufflehogenterprise/
│   │   │   ├── trufflehogenterprise.go
│   │   │   ├── trufflehogenterprise_integration_test.go
│   │   │   └── trufflehogenterprise_test.go
│   │   ├── twelvedata/
│   │   │   ├── twelvedata.go
│   │   │   ├── twelvedata_integration_test.go
│   │   │   └── twelvedata_test.go
│   │   ├── twilio/
│   │   │   ├── twilio.go
│   │   │   ├── twilio_integration_test.go
│   │   │   └── twilio_test.go
│   │   ├── twilioapikey/
│   │   │   ├── twilioapikey.go
│   │   │   ├── twilioapikey_integration_test.go
│   │   │   └── twilioapikey_test.go
│   │   ├── twist/
│   │   │   ├── twist.go
│   │   │   ├── twist_integration_test.go
│   │   │   └── twist_test.go
│   │   ├── twitch/
│   │   │   ├── twitch.go
│   │   │   ├── twitch_integration_test.go
│   │   │   └── twitch_test.go
│   │   ├── twitchaccesstoken/
│   │   │   ├── twitchaccesstoken.go
│   │   │   ├── twitchaccesstoken_integration_test.go
│   │   │   └── twitchaccesstoken_test.go
│   │   ├── twitter/
│   │   │   ├── v1/
│   │   │   │   ├── twitter_v1.go
│   │   │   │   ├── twitter_v1_integration_test.go
│   │   │   │   └── twitter_v1_test.go
│   │   │   └── v2/
│   │   │       ├── twitter_v2.go
│   │   │       ├── twitter_v2_integration_test.go
│   │   │       └── twitter_v2_test.go
│   │   ├── twitterconsumerkey/
│   │   │   ├── twitterconsumerkey.go
│   │   │   ├── twitterconsumerkey_integration_test.go
│   │   │   └── twitterconsumerkey_test.go
│   │   ├── tyntec/
│   │   │   ├── tyntec.go
│   │   │   ├── tyntec_integration_test.go
│   │   │   └── tyntec_test.go
│   │   ├── typeform/
│   │   │   ├── v1/
│   │   │   │   ├── typeform.go
│   │   │   │   ├── typeform_integration_test.go
│   │   │   │   └── typeform_test.go
│   │   │   └── v2/
│   │   │       ├── typeform.go
│   │   │       ├── typeform_integration_test.go
│   │   │       └── typeform_test.go
│   │   ├── typetalk/
│   │   │   ├── typetalk.go
│   │   │   ├── typetalk_integration_test.go
│   │   │   └── typetalk_test.go
│   │   ├── ubidots/
│   │   │   ├── ubidots.go
│   │   │   ├── ubidots_integration_test.go
│   │   │   └── ubidots_test.go
│   │   ├── uclassify/
│   │   │   ├── uclassify.go
│   │   │   ├── uclassify_integration_test.go
│   │   │   └── uclassify_test.go
│   │   ├── unifyid/
│   │   │   ├── unifyid.go
│   │   │   ├── unifyid_integration_test.go
│   │   │   └── unifyid_test.go
│   │   ├── unplugg/
│   │   │   ├── unplugg.go
│   │   │   ├── unplugg_integration_test.go
│   │   │   └── unplugg_test.go
│   │   ├── unsplash/
│   │   │   ├── unsplash.go
│   │   │   ├── unsplash_integration_test.go
│   │   │   └── unsplash_test.go
│   │   ├── upcdatabase/
│   │   │   ├── upcdatabase.go
│   │   │   ├── upcdatabase_integration_test.go
│   │   │   └── upcdatabase_test.go
│   │   ├── uplead/
│   │   │   ├── uplead.go
│   │   │   ├── uplead_integration_test.go
│   │   │   └── uplead_test.go
│   │   ├── uploadcare/
│   │   │   ├── uploadcare.go
│   │   │   ├── uploadcare_integration_test.go
│   │   │   └── uploadcare_test.go
│   │   ├── uptimerobot/
│   │   │   ├── uptimerobot.go
│   │   │   ├── uptimerobot_integration_test.go
│   │   │   └── uptimerobot_test.go
│   │   ├── upwave/
│   │   │   ├── upwave.go
│   │   │   ├── upwave_integration_test.go
│   │   │   └── upwave_test.go
│   │   ├── uri/
│   │   │   ├── uri.go
│   │   │   ├── uri_integration_test.go
│   │   │   └── uri_test.go
│   │   ├── urlscan/
│   │   │   ├── urlscan.go
│   │   │   ├── urlscan_integration_test.go
│   │   │   └── urlscan_test.go
│   │   ├── user/
│   │   │   ├── user.go
│   │   │   ├── user_integration_test.go
│   │   │   └── user_test.go
│   │   ├── userflow/
│   │   │   ├── userflow.go
│   │   │   ├── userflow_integration_test.go
│   │   │   └── userflow_test.go
│   │   ├── userstack/
│   │   │   ├── userstack.go
│   │   │   ├── userstack_integration_test.go
│   │   │   └── userstack_test.go
│   │   ├── vagrantcloudpersonaltoken/
│   │   │   ├── vagrantcloudpersonaltoken.go
│   │   │   ├── vagrantcloudpersonaltoken_integration_test.go
│   │   │   └── vagrantcloudpersonaltoken_test.go
│   │   ├── vatlayer/
│   │   │   ├── vatlayer.go
│   │   │   ├── vatlayer_integration_test.go
│   │   │   └── vatlayer_test.go
│   │   ├── vbout/
│   │   │   ├── vbout.go
│   │   │   ├── vbout_integration_test.go
│   │   │   └── vbout_test.go
│   │   ├── vercel/
│   │   │   ├── vercel.go
│   │   │   ├── vercel_integration_test.go
│   │   │   └── vercel_test.go
│   │   ├── verifier/
│   │   │   ├── verifier.go
│   │   │   ├── verifier_integration_test.go
│   │   │   └── verifier_test.go
│   │   ├── verimail/
│   │   │   ├── verimail.go
│   │   │   ├── verimail_integration_test.go
│   │   │   └── verimail_test.go
│   │   ├── veriphone/
│   │   │   ├── veriphone.go
│   │   │   ├── veriphone_integration_test.go
│   │   │   └── veriphone_test.go
│   │   ├── versioneye/
│   │   │   ├── versioneye.go
│   │   │   ├── versioneye_integration_test.go
│   │   │   └── versioneye_test.go
│   │   ├── viewneo/
│   │   │   ├── viewneo.go
│   │   │   ├── viewneo_integration_test.go
│   │   │   └── viewneo_test.go
│   │   ├── virustotal/
│   │   │   ├── virustotal.go
│   │   │   ├── virustotal_integration_test.go
│   │   │   └── virustotal_test.go
│   │   ├── visualcrossing/
│   │   │   ├── visualcrossing.go
│   │   │   ├── visualcrossing_integration_test.go
│   │   │   └── visualcrossing_test.go
│   │   ├── voiceflow/
│   │   │   ├── voiceflow.go
│   │   │   ├── voiceflow_integration_test.go
│   │   │   └── voiceflow_test.go
│   │   ├── voicegain/
│   │   │   ├── voicegain.go
│   │   │   ├── voicegain_integration_test.go
│   │   │   └── voicegain_test.go
│   │   ├── voodoosms/
│   │   │   ├── voodoosms.go
│   │   │   ├── voodoosms_integration_test.go
│   │   │   └── voodoosms_test.go
│   │   ├── vouchery/
│   │   │   ├── vouchery.go
│   │   │   ├── vouchery_integration_test.go
│   │   │   └── vouchery_test.go
│   │   ├── vpnapi/
│   │   │   ├── vpnapi.go
│   │   │   ├── vpnapi_integration_test.go
│   │   │   └── vpnapi_test.go
│   │   ├── vultrapikey/
│   │   │   ├── vultrapikey.go
│   │   │   ├── vultrapikey_integration_test.go
│   │   │   └── vultrapikey_test.go
│   │   ├── vyte/
│   │   │   ├── vyte.go
│   │   │   ├── vyte_integration_test.go
│   │   │   └── vyte_test.go
│   │   ├── walkscore/
│   │   │   ├── walkscore.go
│   │   │   ├── walkscore_integration_test.go
│   │   │   └── walkscore_test.go
│   │   ├── weatherbit/
│   │   │   ├── weatherbit.go
│   │   │   ├── weatherbit_integration_test.go
│   │   │   └── weatherbit_test.go
│   │   ├── weatherstack/
│   │   │   ├── weatherstack.go
│   │   │   ├── weatherstack_integration_test.go
│   │   │   └── weatherstack_test.go
│   │   ├── web3storage/
│   │   │   ├── web3storage.go
│   │   │   ├── web3storage_integration_test.go
│   │   │   └── web3storage_test.go
│   │   ├── webex/
│   │   │   ├── webex.go
│   │   │   ├── webex_integration_test.go
│   │   │   └── webex_test.go
│   │   ├── webexbot/
│   │   │   ├── webexbot.go
│   │   │   ├── webexbot_integration_test.go
│   │   │   └── webexbot_test.go
│   │   ├── webflow/
│   │   │   ├── webflow.go
│   │   │   ├── webflow_integration_test.go
│   │   │   └── webflow_test.go
│   │   ├── webscraper/
│   │   │   ├── webscraper.go
│   │   │   ├── webscraper_integration_test.go
│   │   │   └── webscraper_test.go
│   │   ├── webscraping/
│   │   │   ├── webscraping.go
│   │   │   ├── webscraping_integration_test.go
│   │   │   └── webscraping_test.go
│   │   ├── websitepulse/
│   │   │   ├── websitepulse.go
│   │   │   ├── websitepulse_integration_test.go
│   │   │   └── websitepulse_test.go
│   │   ├── weightsandbiases/
│   │   │   ├── weightsandbiases.go
│   │   │   ├── weightsandbiases_integration_test.go
│   │   │   └── weightsandbiases_test.go
│   │   ├── wepay/
│   │   │   ├── wepay.go
│   │   │   ├── wepay_integration_test.go
│   │   │   └── wepay_test.go
│   │   ├── whoxy/
│   │   │   ├── whoxy.go
│   │   │   ├── whoxy_integration_test.go
│   │   │   └── whoxy_test.go
│   │   ├── wistia/
│   │   │   ├── wistia.go
│   │   │   ├── wistia_integration_test.go
│   │   │   └── wistia_test.go
│   │   ├── wit/
│   │   │   ├── wit.go
│   │   │   ├── wit_integration_test.go
│   │   │   └── wit_test.go
│   │   ├── wiz/
│   │   │   ├── wiz.go
│   │   │   ├── wiz_integration_test.go
│   │   │   └── wiz_test.go
│   │   ├── worksnaps/
│   │   │   ├── worksnaps.go
│   │   │   ├── worksnaps_integration_test.go
│   │   │   └── worksnaps_test.go
│   │   ├── workstack/
│   │   │   ├── workstack.go
│   │   │   ├── workstack_integration_test.go
│   │   │   └── workstack_test.go
│   │   ├── worldcoinindex/
│   │   │   ├── worldcoinindex.go
│   │   │   ├── worldcoinindex_integration_test.go
│   │   │   └── worldcoinindex_test.go
│   │   ├── worldweather/
│   │   │   ├── worldweather.go
│   │   │   ├── worldweather_integration_test.go
│   │   │   └── worldweather_test.go
│   │   ├── wrike/
│   │   │   ├── wrike.go
│   │   │   ├── wrike_integration_test.go
│   │   │   └── wrike_test.go
│   │   ├── xai/
│   │   │   ├── xai.go
│   │   │   ├── xai_integration_test.go
│   │   │   └── xai_test.go
│   │   ├── yandex/
│   │   │   ├── yandex.go
│   │   │   ├── yandex_integration_test.go
│   │   │   └── yandex_test.go
│   │   ├── yelp/
│   │   │   ├── yelp.go
│   │   │   ├── yelp_integration_test.go
│   │   │   └── yelp_test.go
│   │   ├── youneedabudget/
│   │   │   ├── youneedabudget.go
│   │   │   ├── youneedabudget_integration_test.go
│   │   │   └── youneedabudget_test.go
│   │   ├── yousign/
│   │   │   ├── yousign.go
│   │   │   ├── yousign_integration_test.go
│   │   │   └── yousign_test.go
│   │   ├── youtubeapikey/
│   │   │   ├── youtubeapikey.go
│   │   │   ├── youtubeapikey_integration_test.go
│   │   │   └── youtubeapikey_test.go
│   │   ├── zapierwebhook/
│   │   │   ├── zapierwebhook.go
│   │   │   ├── zapierwebhook_integration_test.go
│   │   │   └── zapierwebhook_test.go
│   │   ├── zendeskapi/
│   │   │   ├── zendeskapi.go
│   │   │   ├── zendeskapi_integration_test.go
│   │   │   └── zendeskapi_test.go
│   │   ├── zenkitapi/
│   │   │   ├── zenkitapi.go
│   │   │   ├── zenkitapi_integration_test.go
│   │   │   └── zenkitapi_test.go
│   │   ├── zenrows/
│   │   │   ├── zenrows.go
│   │   │   ├── zenrows_integration_test.go
│   │   │   └── zenrows_test.go
│   │   ├── zenscrape/
│   │   │   ├── zenscrape.go
│   │   │   ├── zenscrape_integration_test.go
│   │   │   └── zenscrape_test.go
│   │   ├── zenserp/
│   │   │   ├── zenserp.go
│   │   │   ├── zenserp_integration_test.go
│   │   │   └── zenserp_test.go
│   │   ├── zeplin/
│   │   │   ├── zeplin.go
│   │   │   ├── zeplin_integration_test.go
│   │   │   └── zeplin_test.go
│   │   ├── zerobounce/
│   │   │   ├── zerobounce.go
│   │   │   ├── zerobounce_integration_test.go
│   │   │   └── zerobounce_test.go
│   │   ├── zerotier/
│   │   │   ├── zerotier.go
│   │   │   ├── zerotier_integration_test.go
│   │   │   └── zerotier_test.go
│   │   ├── zipapi/
│   │   │   ├── zipapi.go
│   │   │   ├── zipapi_integration_test.go
│   │   │   └── zipapi_test.go
│   │   ├── zipbooks/
│   │   │   ├── zipbooks.go
│   │   │   ├── zipbooks_integration_test.go
│   │   │   └── zipbooks_test.go
│   │   ├── zipcodeapi/
│   │   │   ├── zipcodeapi.go
│   │   │   ├── zipcodeapi_integration_test.go
│   │   │   └── zipcodeapi_test.go
│   │   ├── zipcodebase/
│   │   │   ├── zipcodebase.go
│   │   │   ├── zipcodebase_integration_test.go
│   │   │   └── zipcodebase_test.go
│   │   ├── zohocrm/
│   │   │   ├── zohocrm.go
│   │   │   ├── zohocrm_integration_test.go
│   │   │   └── zohocrm_test.go
│   │   ├── zonkafeedback/
│   │   │   ├── zonkafeedback.go
│   │   │   ├── zonkafeedback_integration_test.go
│   │   │   └── zonkafeedback_test.go
│   │   └── zulipchat/
│   │       ├── zulipchat.go
│   │       ├── zulipchat_integration_test.go
│   │       └── zulipchat_test.go
│   ├── engine/
│   │   ├── ahocorasick/
│   │   │   ├── ahocorasickcore.go
│   │   │   └── ahocorasickcore_test.go
│   │   ├── circleci.go
│   │   ├── defaults/
│   │   │   ├── defaults.go
│   │   │   └── defaults_test.go
│   │   ├── docker.go
│   │   ├── elasticsearch.go
│   │   ├── engine.go
│   │   ├── engine_test.go
│   │   ├── filesystem.go
│   │   ├── filesystem_integration_test.go
│   │   ├── gcs.go
│   │   ├── gcs_test.go
│   │   ├── git.go
│   │   ├── git_test.go
│   │   ├── github.go
│   │   ├── github_experimental.go
│   │   ├── gitlab.go
│   │   ├── gitlab_integration_test.go
│   │   ├── huggingface.go
│   │   ├── jenkins.go
│   │   ├── json_enumerator.go
│   │   ├── metrics.go
│   │   ├── postman.go
│   │   ├── postman_test.go
│   │   ├── s3.go
│   │   ├── scan.go
│   │   ├── stdin.go
│   │   ├── syslog.go
│   │   ├── testdata/
│   │   │   ├── secrets.txt
│   │   │   ├── verificationoverlap_detectors.yaml
│   │   │   ├── verificationoverlap_secrets.txt
│   │   │   └── verificationoverlap_secrets_fp.txt
│   │   └── travisci.go
│   ├── feature/
│   │   └── feature.go
│   ├── gitparse/
│   │   ├── gitparse.go
│   │   └── gitparse_test.go
│   ├── giturl/
│   │   ├── giturl.go
│   │   └── giturl_test.go
│   ├── handlers/
│   │   ├── apk.go
│   │   ├── apk_test.go
│   │   ├── ar.go
│   │   ├── ar_test.go
│   │   ├── archive.go
│   │   ├── archive_test.go
│   │   ├── default.go
│   │   ├── default_test.go
│   │   ├── handlers.go
│   │   ├── handlers_test.go
│   │   ├── metrics.go
│   │   ├── rpm.go
│   │   ├── rpm_test.go
│   │   └── testdata/
│   │       ├── nonarchive.txt
│   │       ├── test.deb
│   │       ├── test.doc
│   │       ├── test.msg
│   │       ├── test.rpm
│   │       └── test.tgz
│   ├── hasher/
│   │   ├── blake2b.go
│   │   ├── hasher.go
│   │   └── hasher_test.go
│   ├── iobuf/
│   │   ├── bufferedreaderseeker.go
│   │   └── bufferedreaderseeker_test.go
│   ├── log/
│   │   ├── dynamic_redactor.go
│   │   ├── level.go
│   │   ├── log.go
│   │   ├── log_cores_test.go
│   │   ├── log_test.go
│   │   ├── redaction_core.go
│   │   └── suppress_caller_core.go
│   ├── output/
│   │   ├── github_actions.go
│   │   ├── json.go
│   │   ├── legacy_json.go
│   │   └── plain.go
│   ├── pb/
│   │   ├── configpb/
│   │   │   ├── config.pb.go
│   │   │   └── config.pb.validate.go
│   │   ├── credentialspb/
│   │   │   ├── credentials.pb.go
│   │   │   └── credentials.pb.validate.go
│   │   ├── custom_detectorspb/
│   │   │   ├── custom_detectors.pb.go
│   │   │   └── custom_detectors.pb.validate.go
│   │   ├── detectorspb/
│   │   │   ├── detectors.pb.go
│   │   │   └── detectors.pb.validate.go
│   │   ├── source_metadatapb/
│   │   │   ├── source_metadata.pb.go
│   │   │   └── source_metadata.pb.validate.go
│   │   └── sourcespb/
│   │       ├── sources.pb.go
│   │       └── sources.pb.validate.go
│   ├── process/
│   │   └── zombies.go
│   ├── protoyaml/
│   │   └── protoyaml.go
│   ├── roundtripper/
│   │   └── roundtripper.go
│   ├── sanitizer/
│   │   ├── utf8.go
│   │   └── utf8_test.go
│   ├── sources/
│   │   ├── chunker.go
│   │   ├── chunker_test.go
│   │   ├── circleci/
│   │   │   ├── circleci.go
│   │   │   └── circleci_test.go
│   │   ├── docker/
│   │   │   ├── README.md
│   │   │   ├── docker.go
│   │   │   ├── docker_test.go
│   │   │   ├── metrics.go
│   │   │   ├── registries.go
│   │   │   └── registries_test.go
│   │   ├── elasticsearch/
│   │   │   ├── api.go
│   │   │   ├── elasticsearch.go
│   │   │   ├── elasticsearch_integration_test.go
│   │   │   ├── unit_of_work.go
│   │   │   └── unit_of_work_test.go
│   │   ├── errors.go
│   │   ├── errors_test.go
│   │   ├── filesystem/
│   │   │   ├── filesystem.go
│   │   │   ├── filesystem_symlink_test.go
│   │   │   └── filesystem_test.go
│   │   ├── gcs/
│   │   │   ├── gcs.go
│   │   │   ├── gcs_integration_test.go
│   │   │   ├── gcs_manager.go
│   │   │   ├── gcs_manager_test.go
│   │   │   └── gcs_test.go
│   │   ├── git/
│   │   │   ├── cmd_check.go
│   │   │   ├── git.go
│   │   │   ├── git_test.go
│   │   │   ├── metrics.go
│   │   │   ├── scan_options.go
│   │   │   ├── unit.go
│   │   │   └── unit_test.go
│   │   ├── github/
│   │   │   ├── connector.go
│   │   │   ├── connector_app.go
│   │   │   ├── connector_basicauth.go
│   │   │   ├── connector_token.go
│   │   │   ├── connector_unauthenticated.go
│   │   │   ├── github.go
│   │   │   ├── github_integration_test.go
│   │   │   ├── github_test.go
│   │   │   ├── graphql.go
│   │   │   ├── metrics.go
│   │   │   ├── queries.go
│   │   │   └── repo.go
│   │   ├── github_experimental/
│   │   │   ├── github_experimental.go
│   │   │   ├── object_discovery.go
│   │   │   └── repo.go
│   │   ├── gitlab/
│   │   │   ├── gitlab.go
│   │   │   ├── gitlab_integration_test.go
│   │   │   ├── gitlab_test.go
│   │   │   ├── metrics.go
│   │   │   └── project_cache.go
│   │   ├── huggingface/
│   │   │   ├── client.go
│   │   │   ├── huggingface.go
│   │   │   ├── huggingface_client_test.go
│   │   │   ├── huggingface_test.go
│   │   │   └── repo.go
│   │   ├── jenkins/
│   │   │   ├── jenkins.go
│   │   │   ├── jenkins_integration_test.go
│   │   │   └── jenkins_test.go
│   │   ├── job_progress.go
│   │   ├── job_progress_hook.go
│   │   ├── job_progress_test.go
│   │   ├── json_enumerator/
│   │   │   ├── json_enumerator.go
│   │   │   └── json_enumerator_test.go
│   │   ├── legacy_reporters.go
│   │   ├── metrics.go
│   │   ├── mock_job_progress_test.go
│   │   ├── postman/
│   │   │   ├── metrics.go
│   │   │   ├── postman.go
│   │   │   ├── postman_client.go
│   │   │   ├── postman_test.go
│   │   │   ├── substitution.go
│   │   │   └── substitution_test.go
│   │   ├── resume.go
│   │   ├── resume_test.go
│   │   ├── s3/
│   │   │   ├── checkpointer.go
│   │   │   ├── checkpointer_test.go
│   │   │   ├── metrics.go
│   │   │   ├── s3.go
│   │   │   ├── s3_integration_test.go
│   │   │   ├── s3_test.go
│   │   │   ├── unit.go
│   │   │   └── unit_test.go
│   │   ├── source_manager.go
│   │   ├── source_manager_test.go
│   │   ├── source_unit.go
│   │   ├── sources.go
│   │   ├── sources_test.go
│   │   ├── stdin/
│   │   │   └── stdin.go
│   │   ├── syslog/
│   │   │   ├── syslog.go
│   │   │   └── syslog_test.go
│   │   ├── test_helpers.go
│   │   └── travisci/
│   │       ├── travisci.go
│   │       └── travisci_test.go
│   ├── sourcestest/
│   │   └── sourcestest.go
│   ├── tui/
│   │   ├── common/
│   │   │   ├── common.go
│   │   │   ├── component.go
│   │   │   ├── error.go
│   │   │   ├── style.go
│   │   │   └── utils.go
│   │   ├── components/
│   │   │   ├── confirm/
│   │   │   │   └── confirm.go
│   │   │   ├── footer/
│   │   │   │   └── footer.go
│   │   │   ├── formfield/
│   │   │   │   └── formfield.go
│   │   │   ├── header/
│   │   │   │   └── header.go
│   │   │   ├── selector/
│   │   │   │   └── selector.go
│   │   │   ├── statusbar/
│   │   │   │   └── statusbar.go
│   │   │   ├── tabs/
│   │   │   │   └── tabs.go
│   │   │   ├── textinput/
│   │   │   │   └── textinput.go
│   │   │   ├── textinputs/
│   │   │   │   └── textinputs.go
│   │   │   └── viewport/
│   │   │       └── viewport.go
│   │   ├── keymap/
│   │   │   └── keymap.go
│   │   ├── pages/
│   │   │   ├── analyze_form/
│   │   │   │   └── analyze_form.go
│   │   │   ├── analyze_keys/
│   │   │   │   └── analyze_keys.go
│   │   │   ├── contact_enterprise/
│   │   │   │   └── contact_enterprise.go
│   │   │   ├── source_configure/
│   │   │   │   ├── item.go
│   │   │   │   ├── run_component.go
│   │   │   │   ├── source_component.go
│   │   │   │   ├── source_configure.go
│   │   │   │   ├── trufflehog_component.go
│   │   │   │   └── trufflehog_configure.go
│   │   │   ├── source_select/
│   │   │   │   ├── item.go
│   │   │   │   └── source_select.go
│   │   │   ├── view_oss/
│   │   │   │   └── view_oss.go
│   │   │   └── wizard_intro/
│   │   │       ├── item.go
│   │   │       └── wizard_intro.go
│   │   ├── sources/
│   │   │   ├── circleci/
│   │   │   │   └── circleci.go
│   │   │   ├── docker/
│   │   │   │   └── docker.go
│   │   │   ├── elasticsearch/
│   │   │   │   └── elasticsearch.go
│   │   │   ├── filesystem/
│   │   │   │   └── filesystem.go
│   │   │   ├── gcs/
│   │   │   │   └── gcs.go
│   │   │   ├── git/
│   │   │   │   └── git.go
│   │   │   ├── github/
│   │   │   │   └── github.go
│   │   │   ├── gitlab/
│   │   │   │   └── gitlab.go
│   │   │   ├── huggingface/
│   │   │   │   └── huggingface.go
│   │   │   ├── jenkins/
│   │   │   │   └── jenkins.go
│   │   │   ├── postman/
│   │   │   │   └── postman.go
│   │   │   ├── s3/
│   │   │   │   └── s3.go
│   │   │   ├── sources.go
│   │   │   └── syslog/
│   │   │       └── syslog.go
│   │   ├── styles/
│   │   │   └── styles.go
│   │   └── tui.go
│   ├── updater/
│   │   └── updater.go
│   ├── verificationcache/
│   │   ├── in_memory_metrics.go
│   │   ├── metrics_reporter.go
│   │   ├── result_cache.go
│   │   ├── verification_cache.go
│   │   └── verification_cache_test.go
│   ├── version/
│   │   └── version.go
│   └── writers/
│       ├── buffer_writer/
│       │   ├── bufferwriter.go
│       │   ├── bufferwriter_test.go
│       │   └── metrics.go
│       └── buffered_file_writer/
│           ├── bufferedfilewriter.go
│           ├── bufferedfilewriter_test.go
│           └── metrics.go
├── proto/
│   ├── config.proto
│   ├── credentials.proto
│   ├── custom_detectors.proto
│   ├── detectors.proto
│   ├── source_metadata.proto
│   └── sources.proto
└── scripts/
    ├── gen_proto.sh
    ├── install.sh
    ├── test-last-changed-detector.sh
    └── test_changed_detectors.sh
Download .txt
Showing preview only (1,632K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (17440 symbols across 3072 files)

FILE: hack/generate/generate.go
  function main (line 24) | func main() {
  type templateJob (line 68) | type templateJob struct
  function mustWriteTemplates (line 74) | func mustWriteTemplates(jobs []templateJob) {
  type templateData (line 119) | type templateData struct
  function folderPath (line 126) | func folderPath() string {
  function makeFolder (line 130) | func makeFolder(path string) error {

FILE: hack/snifftest/main.go
  function main (line 44) | func main() {
  function getAllScanners (line 248) | func getAllScanners() map[string]detectors.Detector {

FILE: main.go
  function init (line 283) | func init() {
  function syncLogs (line 356) | func syncLogs(syncFn func() error) {
  function main (line 362) | func main() {
  function run (line 403) | func run(state overseer.State, logSync func() error) {
  function compareScans (line 630) | func compareScans(ctx context.Context, cmd string, cfg engine.Config) er...
  function compareMetrics (line 661) | func compareMetrics(customMetrics, entireMetrics engine.Metrics) error {
  type metrics (line 678) | type metrics struct
  function runSingleScan (line 683) | func runSingleScan(ctx context.Context, cmd string, cfg engine.Config) (...
  function parseResults (line 1171) | func parseResults(input *string) (map[string]struct{}, error) {
  function logFatalFunc (line 1193) | func logFatalFunc(logger logr.Logger, logSync func() error) func(error, ...
  function commaSeparatedToSlice (line 1205) | func commaSeparatedToSlice(s []string) []string {
  function printAverageDetectorTime (line 1219) | func printAverageDetectorTime(e *engine.Engine) {
  function validateClonePath (line 1232) | func validateClonePath(clonePath string, noCleanup bool) error {
  function isPreCommitHook (line 1258) | func isPreCommitHook() bool {

FILE: pkg/analyzer/analyzers/airbrake/airbrake.go
  type Analyzer (line 19) | type Analyzer struct
    method Type (line 23) | func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.Analy...
    method Analyze (line 25) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  function secretInfoToAnalyzerResult (line 33) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  type SecretInfo (line 69) | type SecretInfo struct
  type Project (line 77) | type Project struct
  function validateKey (line 83) | func validateKey(cfg *config.Config, key string) (bool, []Project, error) {
  function AnalyzeAndPrintPermissions (line 123) | func AnalyzeAndPrintPermissions(cfg *config.Config, key string) {
  function AnalyzePermissions (line 146) | func AnalyzePermissions(cfg *config.Config, key string) (*SecretInfo, er...
  function allPermissions (line 172) | func allPermissions() []analyzers.Permission {
  function printProjects (line 180) | func printProjects(projects ...Project) {
  function printPermissions (line 190) | func printPermissions(scopes []analyzers.Permission) {

FILE: pkg/analyzer/analyzers/airtable/airtableoauth/airtable.go
  type Analyzer (line 16) | type Analyzer struct
    method Type (line 20) | func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.Analy...
    method Analyze (line 22) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  function AnalyzeAndPrintPermissions (line 42) | func AnalyzeAndPrintPermissions(cfg *config.Config, token string) {
  function hasScope (line 60) | func hasScope(scopes []string, target string) bool {
  function printUserAndPermissions (line 69) | func printUserAndPermissions(info *common.AirtableUserInfo) {

FILE: pkg/analyzer/analyzers/airtable/airtableoauth/airtable_test.go
  function TestAnalyzer_Analyze (line 19) | func TestAnalyzer_Analyze(t *testing.T) {
  function sortBindings (line 93) | func sortBindings(bindings []analyzers.Binding) {

FILE: pkg/analyzer/analyzers/airtable/airtablepat/airtable.go
  type Analyzer (line 20) | type Analyzer struct
    method Type (line 24) | func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.Analy...
    method Analyze (line 36) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  function getEndpoint (line 28) | func getEndpoint(endpointName common.EndpointName) (common.Endpoint, boo...
  function getScopeEndpoint (line 32) | func getScopeEndpoint(scope string) (common.Endpoint, bool) {
  function AnalyzeAndPrintPermissions (line 69) | func AnalyzeAndPrintPermissions(cfg *config.Config, token string) {
  function determineScope (line 111) | func determineScope(token string, perm common.Permission, requiredIDs ma...
  function determineScopes (line 165) | func determineScopes(token string, basesInfo *common.AirtableBases) error {
  function mapToAnalyzerResult (line 233) | func mapToAnalyzerResult(userInfo *common.AirtableUserInfo, basesInfo *c...

FILE: pkg/analyzer/analyzers/airtable/airtablepat/airtable_test.go
  function TestAnalyzer_Analyze (line 19) | func TestAnalyzer_Analyze(t *testing.T) {
  function sortBindings (line 93) | func sortBindings(bindings []analyzers.Binding) {

FILE: pkg/analyzer/analyzers/airtable/airtablepat/requests.go
  type AirtableRecordsResponse (line 12) | type AirtableRecordsResponse struct
  function fetchAirtableRecords (line 16) | func fetchAirtableRecords(token string, baseID string, tableID string) (...

FILE: pkg/analyzer/analyzers/airtable/common/common.go
  function CallAirtableAPI (line 18) | func CallAirtableAPI(token string, method string, url string) (*http.Res...
  function FetchAirtableUserInfo (line 33) | func FetchAirtableUserInfo(token string) (*AirtableUserInfo, error) {
  function FetchAirtableBases (line 56) | func FetchAirtableBases(token string) (*AirtableBases, error) {
  function fetchBaseSchema (line 89) | func fetchBaseSchema(token string, baseID string) (*Schema, error) {
  function MapToAnalyzerResult (line 113) | func MapToAnalyzerResult(userInfo *AirtableUserInfo, basesInfo *Airtable...
  function PrintUserAndPermissions (line 152) | func PrintUserAndPermissions(info *AirtableUserInfo, scopeStatusMap map[...
  function PrintBases (line 196) | func PrintBases(bases *AirtableBases) {

FILE: pkg/analyzer/analyzers/airtable/common/endpoints.go
  type ErrorResponse (line 5) | type ErrorResponse struct
  type Endpoint (line 9) | type Endpoint struct
  type EndpointName (line 18) | type EndpointName
  constant GetUserInfoEndpoint (line 21) | GetUserInfoEndpoint            EndpointName = iota
  constant ListBasesEndpoint (line 22) | ListBasesEndpoint              EndpointName = iota
  constant UpdateBaseEndpoint (line 23) | UpdateBaseEndpoint             EndpointName = iota
  constant GetBaseSchemaEndpoint (line 24) | GetBaseSchemaEndpoint          EndpointName = iota
  constant ListRecordsEndpoint (line 25) | ListRecordsEndpoint            EndpointName = iota
  constant CreateRecordEndpoint (line 26) | CreateRecordEndpoint           EndpointName = iota
  constant ListRecordCommentsEndpoint (line 27) | ListRecordCommentsEndpoint     EndpointName = iota
  constant ListWebhooksEndpoint (line 28) | ListWebhooksEndpoint           EndpointName = iota
  constant ListBlockInstallationsEndpoint (line 29) | ListBlockInstallationsEndpoint EndpointName = iota
  function init (line 34) | func init() {
  function GetRequiredPermission (line 122) | func GetRequiredPermission(permission Permission) *string {
  function GetEndpoint (line 130) | func GetEndpoint(name EndpointName) (Endpoint, bool) {

FILE: pkg/analyzer/analyzers/airtable/common/models.go
  type AirtableUserInfo (line 3) | type AirtableUserInfo struct
  type AirtableBases (line 9) | type AirtableBases struct
  type Schema (line 17) | type Schema struct
  type AirtableEntity (line 21) | type AirtableEntity struct

FILE: pkg/analyzer/analyzers/airtable/common/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 142) | func (p Permission) ToString() (string, error) {
    method ToID (line 150) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant DataRecordsRead (line 10) | DataRecordsRead Permission = iota
  constant DataRecordsWrite (line 11) | DataRecordsWrite Permission = iota
  constant DataRecordcommentsRead (line 12) | DataRecordcommentsRead Permission = iota
  constant DataRecordcommentsWrite (line 13) | DataRecordcommentsWrite Permission = iota
  constant SchemaBasesRead (line 14) | SchemaBasesRead Permission = iota
  constant SchemaBasesWrite (line 15) | SchemaBasesWrite Permission = iota
  constant WebhookManage (line 16) | WebhookManage Permission = iota
  constant BlockManage (line 17) | BlockManage Permission = iota
  constant UserEmailRead (line 18) | UserEmailRead Permission = iota
  constant EnterpriseGroupsRead (line 19) | EnterpriseGroupsRead Permission = iota
  constant WorkspacesandbasesRead (line 20) | WorkspacesandbasesRead Permission = iota
  constant WorkspacesandbasesWrite (line 21) | WorkspacesandbasesWrite Permission = iota
  constant WorkspacesandbasesSharesManage (line 22) | WorkspacesandbasesSharesManage Permission = iota
  constant EnterpriseScimUsersandgroupsManage (line 23) | EnterpriseScimUsersandgroupsManage Permission = iota
  constant EnterpriseAuditlogsRead (line 24) | EnterpriseAuditlogsRead Permission = iota
  constant EnterpriseChangeeventsRead (line 25) | EnterpriseChangeeventsRead Permission = iota
  constant EnterpriseExportsManage (line 26) | EnterpriseExportsManage Permission = iota
  constant EnterpriseAccountRead (line 27) | EnterpriseAccountRead Permission = iota
  constant EnterpriseAccountWrite (line 28) | EnterpriseAccountWrite Permission = iota
  constant EnterpriseUserRead (line 29) | EnterpriseUserRead Permission = iota
  constant EnterpriseUserWrite (line 30) | EnterpriseUserWrite Permission = iota
  constant EnterpriseGroupsManage (line 31) | EnterpriseGroupsManage Permission = iota
  constant WorkspacesandbasesManage (line 32) | WorkspacesandbasesManage Permission = iota
  function PermissionFromString (line 158) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 166) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/airtable/common/scopes.go
  function init (line 158) | func init() {
  function GetScopePermissions (line 167) | func GetScopePermissions(scope string) ([]string, bool) {
  function GetScopeEndpoint (line 172) | func GetScopeEndpoint(scope string) (Endpoint, bool) {

FILE: pkg/analyzer/analyzers/analyzers.go
  type Analyzer (line 16) | type Analyzer interface
  type AnalyzerType (line 21) | type AnalyzerType
    method String (line 161) | func (a AnalyzerType) String() string {
  type AnalyzerResult (line 24) | type AnalyzerResult struct
  type Resource (line 31) | type Resource struct
  type Permission (line 39) | type Permission struct
  type Binding (line 44) | type Binding struct
  type PermissionType (line 51) | type PermissionType
  constant READ (line 54) | READ       PermissionType = "Read"
  constant WRITE (line 55) | WRITE      PermissionType = "Write"
  constant READ_WRITE (line 56) | READ_WRITE PermissionType = "Read & Write"
  constant NONE (line 57) | NONE       PermissionType = "None"
  constant ERROR (line 58) | ERROR      PermissionType = "Error"
  constant FullAccess (line 60) | FullAccess string = "full_access"
  constant AnalyzerTypeInvalid (line 64) | AnalyzerTypeInvalid AnalyzerType = iota
  constant AnalyzerTypeAirbrake (line 65) | AnalyzerTypeAirbrake
  constant AnalyzerAnthropic (line 66) | AnalyzerAnthropic
  constant AnalyzerTypeAsana (line 67) | AnalyzerTypeAsana
  constant AnalyzerTypeBitbucket (line 68) | AnalyzerTypeBitbucket
  constant AnalyzerTypeDockerHub (line 69) | AnalyzerTypeDockerHub
  constant AnalyzerTypeElevenLabs (line 70) | AnalyzerTypeElevenLabs
  constant AnalyzerTypeGitHub (line 71) | AnalyzerTypeGitHub
  constant AnalyzerTypeGitLab (line 72) | AnalyzerTypeGitLab
  constant AnalyzerTypeHuggingFace (line 73) | AnalyzerTypeHuggingFace
  constant AnalyzerTypeMailchimp (line 74) | AnalyzerTypeMailchimp
  constant AnalyzerTypeMailgun (line 75) | AnalyzerTypeMailgun
  constant AnalyzerTypeMySQL (line 76) | AnalyzerTypeMySQL
  constant AnalyzerTypeOpenAI (line 77) | AnalyzerTypeOpenAI
  constant AnalyzerTypeOpsgenie (line 78) | AnalyzerTypeOpsgenie
  constant AnalyzerTypePostgres (line 79) | AnalyzerTypePostgres
  constant AnalyzerTypePostman (line 80) | AnalyzerTypePostman
  constant AnalyzerTypeSendgrid (line 81) | AnalyzerTypeSendgrid
  constant AnalyzerTypeShopify (line 82) | AnalyzerTypeShopify
  constant AnalyzerTypeSlack (line 83) | AnalyzerTypeSlack
  constant AnalyzerTypeSourcegraph (line 84) | AnalyzerTypeSourcegraph
  constant AnalyzerTypeSquare (line 85) | AnalyzerTypeSquare
  constant AnalyzerTypeStripe (line 86) | AnalyzerTypeStripe
  constant AnalyzerTypeTwilio (line 87) | AnalyzerTypeTwilio
  constant AnalyzerTypePrivateKey (line 88) | AnalyzerTypePrivateKey
  constant AnalyzerTypeNotion (line 89) | AnalyzerTypeNotion
  constant AnalyzerTypeDigitalOcean (line 90) | AnalyzerTypeDigitalOcean
  constant AnalyzerTypePlanetScale (line 91) | AnalyzerTypePlanetScale
  constant AnalyzerTypeAirtableOAuth (line 92) | AnalyzerTypeAirtableOAuth
  constant AnalyzerTypeAirtablePat (line 93) | AnalyzerTypeAirtablePat
  constant AnalyzerTypeGroq (line 94) | AnalyzerTypeGroq
  constant AnalyzerTypeLaunchDarkly (line 95) | AnalyzerTypeLaunchDarkly
  constant AnalyzerTypeFigma (line 96) | AnalyzerTypeFigma
  constant AnalyzerTypePlaid (line 97) | AnalyzerTypePlaid
  constant AnalyzerTypeNetlify (line 98) | AnalyzerTypeNetlify
  constant AnalyzerTypeFastly (line 99) | AnalyzerTypeFastly
  constant AnalyzerTypeMonday (line 100) | AnalyzerTypeMonday
  constant AnalyzerTypeDatadog (line 101) | AnalyzerTypeDatadog
  constant AnalyzerTypeNgrok (line 102) | AnalyzerTypeNgrok
  constant AnalyzerTypeMux (line 103) | AnalyzerTypeMux
  constant AnalyzerTypePosthog (line 104) | AnalyzerTypePosthog
  constant AnalyzerTypeDropbox (line 105) | AnalyzerTypeDropbox
  constant AnalyzerTypeDataBricks (line 106) | AnalyzerTypeDataBricks
  constant AnalyzerTypeJira (line 107) | AnalyzerTypeJira
  function AvailableAnalyzers (line 169) | func AvailableAnalyzers() []string {
  type PermissionStatus (line 185) | type PermissionStatus struct
  type HttpStatusTest (line 190) | type HttpStatusTest struct
    method RunTest (line 202) | func (h *HttpStatusTest) RunTest(headers map[string]string) error {
  type Scope (line 244) | type Scope struct
  function StatusContains (line 249) | func StatusContains(status int, vals []int) bool {
  function GetWriterFromStatus (line 258) | func GetWriterFromStatus(status PermissionType) func(a ...interface{}) s...
  function BindAllPermissions (line 282) | func BindAllPermissions(r Resource, perms ...Permission) []Binding {

FILE: pkg/analyzer/analyzers/anthropic/anthropic.go
  constant APIKey (line 21) | APIKey   = "API-Key"
  constant AdminKey (line 22) | AdminKey = "Admin-Key"
  type Analyzer (line 25) | type Analyzer struct
    method Type (line 47) | func (a Analyzer) Type() analyzers.AnalyzerType {
    method Analyze (line 51) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  type SecretInfo (line 30) | type SecretInfo struct
  type AnthropicResource (line 39) | type AnthropicResource struct
  function AnalyzeAndPrintPermissions (line 65) | func AnalyzeAndPrintPermissions(cfg *config.Config, key string) {
  function AnalyzePermissions (line 89) | func AnalyzePermissions(cfg *config.Config, key string) (*SecretInfo, er...
  function secretInfoToAnalyzerResult (line 120) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  function printPermission (line 163) | func printPermission(permission string) {
  function printAnthropicResources (line 172) | func printAnthropicResources(resources []AnthropicResource) {
  function getKeyType (line 184) | func getKeyType(key string) string {

FILE: pkg/analyzer/analyzers/anthropic/anthropic_test.go
  function TestAnalyzer_Analyze (line 18) | func TestAnalyzer_Analyze(t *testing.T) {

FILE: pkg/analyzer/analyzers/anthropic/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 32) | func (p Permission) ToString() (string, error) {
    method ToID (line 40) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant FullAccess (line 10) | FullAccess Permission = iota
  function PermissionFromString (line 48) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 56) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/anthropic/requests.go
  type ModelsResponse (line 22) | type ModelsResponse struct
  type MessageResponse (line 30) | type MessageResponse struct
  type OrgUsersResponse (line 40) | type OrgUsersResponse struct
  type WorkspacesResponse (line 50) | type WorkspacesResponse struct
  type WorkspaceMembersResponse (line 58) | type WorkspaceMembersResponse struct
  type APIKeysResponse (line 67) | type APIKeysResponse struct
  function makeAnthropicRequest (line 82) | func makeAnthropicRequest(client *http.Client, url, key string) ([]byte,...
  function captureAPIKeyResources (line 113) | func captureAPIKeyResources(client *http.Client, apiKey string, secretIn...
  function captureAdminKeyResources (line 126) | func captureAdminKeyResources(client *http.Client, adminKey string, secr...
  function captureModels (line 142) | func captureModels(client *http.Client, apiKey string, secretInfo *Secre...
  function captureMessageBatches (line 172) | func captureMessageBatches(client *http.Client, apiKey string, secretInf...
  function captureOrgUsers (line 206) | func captureOrgUsers(client *http.Client, adminKey string, secretInfo *S...
  function captureWorkspaces (line 240) | func captureWorkspaces(client *http.Client, adminKey string, secretInfo ...
  function captureWorkspaceMembers (line 276) | func captureWorkspaceMembers(client *http.Client, key string, parentWork...
  function captureAPIKeys (line 307) | func captureAPIKeys(client *http.Client, adminKey string, secretInfo *Se...

FILE: pkg/analyzer/analyzers/asana/asana.go
  type Analyzer (line 22) | type Analyzer struct
    method Type (line 26) | func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.Analy...
    method Analyze (line 28) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  function secretInfoToAnalyzerResult (line 42) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  type SecretInfo (line 79) | type SecretInfo struct
  function AnalyzeAndPrintPermissions (line 92) | func AnalyzeAndPrintPermissions(cfg *config.Config, key string) {
  function AnalyzePermissions (line 101) | func AnalyzePermissions(cfg *config.Config, key string) (*SecretInfo, er...
  function printMetadata (line 133) | func printMetadata(me *SecretInfo) {
  function allPermissions (line 152) | func allPermissions() []analyzers.Permission {

FILE: pkg/analyzer/analyzers/asana/asana_test.go
  function TestAnalyzer_Analyze (line 19) | func TestAnalyzer_Analyze(t *testing.T) {
  function sortBindings (line 93) | func sortBindings(bindings []analyzers.Binding) {

FILE: pkg/analyzer/analyzers/asana/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 227) | func (p Permission) ToString() (string, error) {
    method ToID (line 235) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant AllocationsRead (line 10) | AllocationsRead Permission = iota
  constant AllocationsWrite (line 11) | AllocationsWrite Permission = iota
  constant AttachmentsRead (line 12) | AttachmentsRead Permission = iota
  constant AttachmentsWrite (line 13) | AttachmentsWrite Permission = iota
  constant AutditLogsRead (line 14) | AutditLogsRead Permission = iota
  constant AutditLogsWrite (line 15) | AutditLogsWrite Permission = iota
  constant CustomFieldsRead (line 16) | CustomFieldsRead Permission = iota
  constant CustomFieldsWrite (line 17) | CustomFieldsWrite Permission = iota
  constant CustomFieldSettingsRead (line 18) | CustomFieldSettingsRead Permission = iota
  constant CustomFieldSettingsWrite (line 19) | CustomFieldSettingsWrite Permission = iota
  constant BatchApiRead (line 20) | BatchApiRead Permission = iota
  constant BatchApiWrite (line 21) | BatchApiWrite Permission = iota
  constant EventsRead (line 22) | EventsRead Permission = iota
  constant EventsWrite (line 23) | EventsWrite Permission = iota
  constant GoalsRead (line 24) | GoalsRead Permission = iota
  constant GoalsWrite (line 25) | GoalsWrite Permission = iota
  constant JobsRead (line 26) | JobsRead Permission = iota
  constant JobsWrite (line 27) | JobsWrite Permission = iota
  constant PortfoliosRead (line 28) | PortfoliosRead Permission = iota
  constant PortfoliosWrite (line 29) | PortfoliosWrite Permission = iota
  constant ProjectsRead (line 30) | ProjectsRead Permission = iota
  constant ProjectsWrite (line 31) | ProjectsWrite Permission = iota
  constant ProjectMembershipsRead (line 32) | ProjectMembershipsRead Permission = iota
  constant ProjectMembershipsWrite (line 33) | ProjectMembershipsWrite Permission = iota
  constant SectionsRead (line 34) | SectionsRead Permission = iota
  constant SectionsWrite (line 35) | SectionsWrite Permission = iota
  constant TagsRead (line 36) | TagsRead Permission = iota
  constant TagsWrite (line 37) | TagsWrite Permission = iota
  constant TasksRead (line 38) | TasksRead Permission = iota
  constant TasksWrite (line 39) | TasksWrite Permission = iota
  constant TeamsRead (line 40) | TeamsRead Permission = iota
  constant TeamsWrite (line 41) | TeamsWrite Permission = iota
  constant UsersRead (line 42) | UsersRead Permission = iota
  constant UsersWrite (line 43) | UsersWrite Permission = iota
  constant UserTaskListsRead (line 44) | UserTaskListsRead Permission = iota
  constant UserTaskListsWrite (line 45) | UserTaskListsWrite Permission = iota
  constant MembershipsRead (line 46) | MembershipsRead Permission = iota
  constant MembershipsWrite (line 47) | MembershipsWrite Permission = iota
  constant RulesRead (line 48) | RulesRead Permission = iota
  constant RulesWrite (line 49) | RulesWrite Permission = iota
  function PermissionFromString (line 243) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 251) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/bitbucket/bitbucket.go
  type SecretInfo (line 27) | type SecretInfo struct
  type Repo (line 33) | type Repo struct
  type RepoJSON (line 53) | type RepoJSON struct
  type Analyzer (line 57) | type Analyzer struct
    method Type (line 61) | func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.Analy...
    method Analyze (line 63) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  function secretInfoToAnalyzerResult (line 75) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  function getScopesAndType (line 131) | func getScopesAndType(cfg *config.Config, key string) (string, []string,...
  function scopesToBitbucketScopes (line 159) | func scopesToBitbucketScopes(scopes ...analyzers.Permission) []Bitbucket...
  function getRepositories (line 175) | func getRepositories(cfg *config.Config, key string, role string) (RepoJ...
  function getAllRepos (line 212) | func getAllRepos(cfg *config.Config, key string) ([]Repo, error) {
  function AnalyzePermissions (line 234) | func AnalyzePermissions(cfg *config.Config, key string) (*SecretInfo, er...
  function convertScopeToAnalyzerPermissions (line 253) | func convertScopeToAnalyzerPermissions(scopes []string) []analyzers.Perm...
  function AnalyzeAndPrintPermissions (line 261) | func AnalyzeAndPrintPermissions(cfg *config.Config, key string) {
  function printScopes (line 271) | func printScopes(credentialType string, scopes []analyzers.Permission) {
  function printAccessibleRepositories (line 297) | func printAccessibleRepositories(repos []Repo) {

FILE: pkg/analyzer/analyzers/bitbucket/bitbucket_test.go
  function TestAnalyzer_Analyze (line 18) | func TestAnalyzer_Analyze(t *testing.T) {
  function sortBindings (line 89) | func sortBindings(bindings []analyzers.Binding) {

FILE: pkg/analyzer/analyzers/bitbucket/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 102) | func (p Permission) ToString() (string, error) {
    method ToID (line 110) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant Project (line 10) | Project Permission = iota
  constant ProjectAdmin (line 11) | ProjectAdmin Permission = iota
  constant Repository (line 12) | Repository Permission = iota
  constant RepositoryWrite (line 13) | RepositoryWrite Permission = iota
  constant RepositoryAdmin (line 14) | RepositoryAdmin Permission = iota
  constant RepositoryDelete (line 15) | RepositoryDelete Permission = iota
  constant Pullrequest (line 16) | Pullrequest Permission = iota
  constant PullrequestWrite (line 17) | PullrequestWrite Permission = iota
  constant Webhook (line 18) | Webhook Permission = iota
  constant Account (line 19) | Account Permission = iota
  constant Pipeline (line 20) | Pipeline Permission = iota
  constant PipelineWrite (line 21) | PipelineWrite Permission = iota
  constant PipelineVariable (line 22) | PipelineVariable Permission = iota
  constant Runner (line 23) | Runner Permission = iota
  constant RunnerWrite (line 24) | RunnerWrite Permission = iota
  function PermissionFromString (line 118) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 126) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/bitbucket/scopes.go
  type BitbucketScope (line 9) | type BitbucketScope struct
  type ByCategoryAndName (line 15) | type ByCategoryAndName
    method Len (line 17) | func (a ByCategoryAndName) Len() int      { return len(a) }
    method Swap (line 18) | func (a ByCategoryAndName) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
    method Less (line 19) | func (a ByCategoryAndName) Less(i, j int) bool {

FILE: pkg/analyzer/analyzers/client.go
  type AnalyzeClient (line 14) | type AnalyzeClient struct
  function CreateLogFileName (line 20) | func CreateLogFileName(baseName string) string {
  type ClientOption (line 32) | type ClientOption
  function NewAnalyzeClient (line 35) | func NewAnalyzeClient(cfg *config.Config, opts ...func(*http.Client)) *h...
  function NewAnalyzeClientUnrestricted (line 54) | func NewAnalyzeClientUnrestricted(cfg *config.Config, opts ...ClientOpti...
  type LoggingRoundTripper (line 72) | type LoggingRoundTripper struct
    method RoundTrip (line 78) | func (r LoggingRoundTripper) RoundTrip(req *http.Request) (*http.Respo...
  type AnalyzerRoundTripper (line 120) | type AnalyzerRoundTripper struct
    method RoundTrip (line 124) | func (r AnalyzerRoundTripper) RoundTrip(req *http.Request) (*http.Resp...
  function IsMethodSafe (line 138) | func IsMethodSafe(method string) bool {
  type RateLimitRoundTripper (line 147) | type RateLimitRoundTripper struct
    method RoundTrip (line 152) | func (rt RateLimitRoundTripper) RoundTrip(req *http.Request) (*http.Re...
  function WithRateLimiter (line 164) | func WithRateLimiter(l *rate.Limiter) ClientOption {

FILE: pkg/analyzer/analyzers/client_test.go
  function TestAnalyzerClientUnsafeSuccess (line 9) | func TestAnalyzerClientUnsafeSuccess(t *testing.T) {

FILE: pkg/analyzer/analyzers/databricks/databricks.go
  type Analyzer (line 18) | type Analyzer struct
    method Type (line 22) | func (a Analyzer) Type() analyzers.AnalyzerType {
    method Analyze (line 26) | func (a Analyzer) Analyze(ctx context.Context, credInfo map[string]str...
  function AnalyzeAndPrintPermissions (line 45) | func AnalyzeAndPrintPermissions(cfg *config.Config, domain, token string) {
  function AnalyzePermissions (line 72) | func AnalyzePermissions(ctx context.Context, cfg *config.Config, domain,...
  function secretInfoToAnalyzerResult (line 98) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  function printUserInfo (line 138) | func printUserInfo(user User) {
  function printTokenInfo (line 148) | func printTokenInfo(tokens []Token) {
  function printPermissions (line 160) | func printPermissions(permissions []string) {
  function printResources (line 171) | func printResources(resources []DataBricksResource) {

FILE: pkg/analyzer/analyzers/databricks/databricks_test.go
  function TestAnalyzer_Analyze (line 19) | func TestAnalyzer_Analyze(t *testing.T) {
  function sortBindings (line 98) | func sortBindings(bindings []analyzers.Binding) {

FILE: pkg/analyzer/analyzers/databricks/models.go
  type ResourceType (line 3) | type ResourceType
    method String (line 5) | func (r ResourceType) String() string {
  constant CurrentUser (line 10) | CurrentUser      ResourceType = "User"
  constant TokensInfo (line 11) | TokensInfo       ResourceType = "Token"
  constant TokenPermissions (line 12) | TokenPermissions ResourceType = "Token Permission"
  constant Repositories (line 13) | Repositories     ResourceType = "Repository"
  constant GitCredentials (line 14) | GitCredentials   ResourceType = "Git Credential"
  constant Jobs (line 15) | Jobs             ResourceType = "Job"
  constant Clusters (line 16) | Clusters         ResourceType = "Cluster"
  constant Groups (line 17) | Groups           ResourceType = "Group"
  constant Users (line 18) | Users            ResourceType = "Member"
  type SecretInfo (line 21) | type SecretInfo struct
  type User (line 28) | type User struct
  type Token (line 34) | type Token struct
  type DataBricksResource (line 42) | type DataBricksResource struct
  type CurrentUserInfo (line 51) | type CurrentUserInfo struct
  type Tokens (line 61) | type Tokens struct
  type Permissions (line 71) | type Permissions struct
  type ReposResponse (line 78) | type ReposResponse struct
  type GitCreds (line 87) | type GitCreds struct
  type JobsResponse (line 95) | type JobsResponse struct
  type ClustersResponse (line 103) | type ClustersResponse struct
  type GroupsResponse (line 111) | type GroupsResponse struct
  type UsersResponse (line 119) | type UsersResponse struct

FILE: pkg/analyzer/analyzers/databricks/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 37) | func (p Permission) ToString() (string, error) {
    method ToID (line 45) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant CanManage (line 10) | CanManage Permission = iota
  constant CanUse (line 11) | CanUse Permission = iota
  function PermissionFromString (line 53) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 61) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/databricks/requests.go
  function doAndDecode (line 42) | func doAndDecode[T any](ctx context.Context, client *http.Client, domain...
  function captureDataBricksResources (line 82) | func captureDataBricksResources(ctx context.Context, client *http.Client...
  function captureUserInfo (line 110) | func captureUserInfo(ctx context.Context, client *http.Client, domain, t...
  function captureTokensInfo (line 131) | func captureTokensInfo(ctx context.Context, client *http.Client, domain,...
  function captureTokenPermissions (line 151) | func captureTokenPermissions(ctx context.Context, client *http.Client, d...
  function captureRepos (line 165) | func captureRepos(ctx context.Context, client *http.Client, domain, toke...
  function captureGitCreds (line 191) | func captureGitCreds(ctx context.Context, client *http.Client, domain, t...
  function captureJobs (line 212) | func captureJobs(ctx context.Context, client *http.Client, domain, token...
  function captureClusters (line 233) | func captureClusters(ctx context.Context, client *http.Client, domain, t...
  function captureGroups (line 254) | func captureGroups(ctx context.Context, client *http.Client, domain, tok...
  function captureUsers (line 272) | func captureUsers(ctx context.Context, client *http.Client, domain, toke...
  function readableTime (line 293) | func readableTime(timestamp int) string {

FILE: pkg/analyzer/analyzers/datadog/datadog.go
  type Analyzer (line 20) | type Analyzer struct
    method Type (line 24) | func (a Analyzer) Type() analyzers.AnalyzerType {
    method Analyze (line 29) | func (a Analyzer) Analyze(ctx context.Context, credInfo map[string]str...
  function AnalyzeAndPrintPermissions (line 41) | func AnalyzeAndPrintPermissions(cfg *config.Config, apiKey, appKey, endp...
  function AnalyzePermissions (line 60) | func AnalyzePermissions(cfg *config.Config, apiKey, appKey, endpoint str...
  function secretInfoToAnalyzerResult (line 129) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  function secretInfoPermissionsToAnalyzerPermission (line 186) | func secretInfoPermissionsToAnalyzerPermission(perms []Permission) *[]an...
  function secretInfoResourceToAnalyzerResource (line 197) | func secretInfoResourceToAnalyzerResource(resource Resource) *analyzers....
  function printUser (line 212) | func printUser(user User) {
  function printResources (line 226) | func printResources(resources []Resource) {
  function printPermissions (line 245) | func printPermissions(permissions []Permission) {

FILE: pkg/analyzer/analyzers/datadog/datadog_test.go
  function TestAnalyzer_Analyze (line 23) | func TestAnalyzer_Analyze(t *testing.T) {
  function TestAnalyzer_Analyze_ApiKeyOnly (line 157) | func TestAnalyzer_Analyze_ApiKeyOnly(t *testing.T) {
  function sortBindings (line 237) | func sortBindings(bindings []analyzers.Binding) {

FILE: pkg/analyzer/analyzers/datadog/models.go
  constant ResourceTypeValidate (line 7) | ResourceTypeValidate    = "Validate"
  constant ResourceTypeCurrentUser (line 8) | ResourceTypeCurrentUser = "Current User"
  constant ResourceTypeDashboard (line 9) | ResourceTypeDashboard   = "Dashboard"
  constant ResourceTypeMonitor (line 10) | ResourceTypeMonitor     = "Monitor"
  type Permission (line 14) | type Permission struct
  type SecretInfo (line 22) | type SecretInfo struct
    method appendResource (line 79) | func (s *SecretInfo) appendResource(resource Resource) {
  type User (line 31) | type User struct
  type Resource (line 38) | type Resource struct
  type currentUserResponse (line 46) | type currentUserResponse struct
  type dashboardResponse (line 56) | type dashboardResponse struct
  type DashboardItem (line 60) | type DashboardItem struct
  type monitorResponse (line 73) | type monitorResponse

FILE: pkg/analyzer/analyzers/datadog/requests.go
  constant defaultTimeout (line 20) | defaultTimeout = 12 * time.Second
  constant apiKeyHeader (line 21) | apiKeyHeader   = "DD-API-KEY"
  constant appKeyHeader (line 22) | appKeyHeader   = "DD-APPLICATION-KEY"
  type HttpStatusTest (line 51) | type HttpStatusTest struct
    method RunTest (line 158) | func (h *HttpStatusTest) RunTest(client *http.Client, baseURL string, ...
  type Scope (line 59) | type Scope struct
  function DetectDomain (line 72) | func DetectDomain(client *http.Client, apiKey string, appKey string) (st...
  function makeDataDogRequest (line 118) | func makeDataDogRequest(client *http.Client, baseURL, endpoint, method, ...
  function ValidateApiKey (line 183) | func ValidateApiKey(client *http.Client, baseURL, apiKey string) (bool, ...
  function CaptureUserInformation (line 228) | func CaptureUserInformation(client *http.Client, baseURL, apiKey, appKey...
  function CaptureResources (line 240) | func CaptureResources(client *http.Client, baseURL, apiKey, appKey strin...
  function CapturePermissions (line 276) | func CapturePermissions(client *http.Client, baseURL, apiKey, appKey str...
  function CaptureApiKeyPermissions (line 316) | func CaptureApiKeyPermissions(secretInfo *SecretInfo) error {
  function getCurrentUserInfo (line 345) | func getCurrentUserInfo(client *http.Client, baseURL, apiKey, appKey str...
  function addUserToSecretInfo (line 366) | func addUserToSecretInfo(caller *currentUserResponse, secretInfo *Secret...
  function captureDashboard (line 377) | func captureDashboard(client *http.Client, baseURL, apiKey, appKey strin...
  function captureMonitor (line 415) | func captureMonitor(client *http.Client, baseURL, apiKey, appKey string,...
  function readInScopes (line 450) | func readInScopes() ([]Scope, error) {

FILE: pkg/analyzer/analyzers/digitalocean/digitalocean.go
  constant MAX_CONCURRENT_TESTS (line 26) | MAX_CONCURRENT_TESTS = 10
  type Analyzer (line 28) | type Analyzer struct
    method Type (line 32) | func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.Analy...
    method Analyze (line 34) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  function secretInfoToAnalyzerResult (line 46) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  type HttpStatusTest (line 81) | type HttpStatusTest struct
    method RunTest (line 98) | func (h *HttpStatusTest) RunTest(cfg *config.Config, headers map[strin...
  function StatusContains (line 89) | func StatusContains(status int, vals []int) bool {
  type Scope (line 139) | type Scope struct
  function readInScopes (line 144) | func readInScopes() ([]Scope, error) {
  function checkPermissions (line 153) | func checkPermissions(cfg *config.Config, key string) ([]string, error) {
  type user (line 206) | type user struct
  type userJSON (line 213) | type userJSON struct
  function getUser (line 217) | func getUser(cfg *config.Config, token string) (*user, error) {
  type SecretInfo (line 252) | type SecretInfo struct
  function AnalyzeAndPrintPermissions (line 257) | func AnalyzeAndPrintPermissions(cfg *config.Config, key string) {
  function AnalyzePermissions (line 271) | func AnalyzePermissions(cfg *config.Config, key string) (*SecretInfo, er...
  function printPermissions (line 294) | func printPermissions(permissions []string) {

FILE: pkg/analyzer/analyzers/digitalocean/digitalocean_test.go
  function TestAnalyzer_Analyze (line 19) | func TestAnalyzer_Analyze(t *testing.T) {
  function sortBindings (line 93) | func sortBindings(bindings []analyzers.Binding) {

FILE: pkg/analyzer/analyzers/digitalocean/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 517) | func (p Permission) ToString() (string, error) {
    method ToID (line 525) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant OneClickRead (line 10) | OneClickRead Permission = iota
  constant OneClickCreate (line 11) | OneClickCreate Permission = iota
  constant ActionRead (line 12) | ActionRead Permission = iota
  constant AppRead (line 13) | AppRead Permission = iota
  constant AppCreate (line 14) | AppCreate Permission = iota
  constant AppUpdate (line 15) | AppUpdate Permission = iota
  constant AppDelete (line 16) | AppDelete Permission = iota
  constant BillingRead (line 17) | BillingRead Permission = iota
  constant BlockStorageRead (line 18) | BlockStorageRead Permission = iota
  constant BlockStorageCreate (line 19) | BlockStorageCreate Permission = iota
  constant BlockStorageDelete (line 20) | BlockStorageDelete Permission = iota
  constant CdnEndpointRead (line 21) | CdnEndpointRead Permission = iota
  constant CdnEndpointCreate (line 22) | CdnEndpointCreate Permission = iota
  constant CdnEndpointUpdate (line 23) | CdnEndpointUpdate Permission = iota
  constant CdnEndpointDelete (line 24) | CdnEndpointDelete Permission = iota
  constant CertificateRead (line 25) | CertificateRead Permission = iota
  constant CertificateCreate (line 26) | CertificateCreate Permission = iota
  constant CertificateDelete (line 27) | CertificateDelete Permission = iota
  constant ContainerRegistryRead (line 28) | ContainerRegistryRead Permission = iota
  constant ContainerRegistryCreate (line 29) | ContainerRegistryCreate Permission = iota
  constant DatabaseRead (line 30) | DatabaseRead Permission = iota
  constant DatabaseCreate (line 31) | DatabaseCreate Permission = iota
  constant DatabaseUpdate (line 32) | DatabaseUpdate Permission = iota
  constant DatabaseDelete (line 33) | DatabaseDelete Permission = iota
  constant DomainRecordRead (line 34) | DomainRecordRead Permission = iota
  constant DomainRecordCreate (line 35) | DomainRecordCreate Permission = iota
  constant DomainRecordUpdate (line 36) | DomainRecordUpdate Permission = iota
  constant DomainRecordDelete (line 37) | DomainRecordDelete Permission = iota
  constant DomainRead (line 38) | DomainRead Permission = iota
  constant DomainCreate (line 39) | DomainCreate Permission = iota
  constant DomainDelete (line 40) | DomainDelete Permission = iota
  constant DropletRead (line 41) | DropletRead Permission = iota
  constant DropletCreate (line 42) | DropletCreate Permission = iota
  constant DropletDelete (line 43) | DropletDelete Permission = iota
  constant DropletAutoscalePoolRead (line 44) | DropletAutoscalePoolRead Permission = iota
  constant DropletAutoscalePoolCreate (line 45) | DropletAutoscalePoolCreate Permission = iota
  constant DropletAutoscalePoolUpdate (line 46) | DropletAutoscalePoolUpdate Permission = iota
  constant DropletAutoscalePoolDelete (line 47) | DropletAutoscalePoolDelete Permission = iota
  constant FirewallRead (line 48) | FirewallRead Permission = iota
  constant FirewallCreate (line 49) | FirewallCreate Permission = iota
  constant FirewallUpdate (line 50) | FirewallUpdate Permission = iota
  constant FirewallDelete (line 51) | FirewallDelete Permission = iota
  constant FloatingIpRead (line 52) | FloatingIpRead Permission = iota
  constant FloatingIpCreate (line 53) | FloatingIpCreate Permission = iota
  constant FloatingIpDelete (line 54) | FloatingIpDelete Permission = iota
  constant NamespaceRead (line 55) | NamespaceRead Permission = iota
  constant NamespaceCreate (line 56) | NamespaceCreate Permission = iota
  constant NamespaceDelete (line 57) | NamespaceDelete Permission = iota
  constant GenaiAgentRead (line 58) | GenaiAgentRead Permission = iota
  constant GenaiAgentCreate (line 59) | GenaiAgentCreate Permission = iota
  constant GenaiAgentUpdate (line 60) | GenaiAgentUpdate Permission = iota
  constant GenaiAgentDelete (line 61) | GenaiAgentDelete Permission = iota
  constant ImageRead (line 62) | ImageRead Permission = iota
  constant ImageCreate (line 63) | ImageCreate Permission = iota
  constant ImageUpdate (line 64) | ImageUpdate Permission = iota
  constant ImageDelete (line 65) | ImageDelete Permission = iota
  constant KubernetesRead (line 66) | KubernetesRead Permission = iota
  constant KubernetesCreate (line 67) | KubernetesCreate Permission = iota
  constant KubernetesUpdate (line 68) | KubernetesUpdate Permission = iota
  constant KubernetesDelete (line 69) | KubernetesDelete Permission = iota
  constant LoadBalancerRead (line 70) | LoadBalancerRead Permission = iota
  constant LoadBalancerCreate (line 71) | LoadBalancerCreate Permission = iota
  constant LoadBalancerUpdate (line 72) | LoadBalancerUpdate Permission = iota
  constant LoadBalancerDelete (line 73) | LoadBalancerDelete Permission = iota
  constant MonitoringRead (line 74) | MonitoringRead Permission = iota
  constant MonitoringCreate (line 75) | MonitoringCreate Permission = iota
  constant MonitoringUpdate (line 76) | MonitoringUpdate Permission = iota
  constant MonitoringDelete (line 77) | MonitoringDelete Permission = iota
  constant ProjectRead (line 78) | ProjectRead Permission = iota
  constant ProjectCreate (line 79) | ProjectCreate Permission = iota
  constant ProjectUpdate (line 80) | ProjectUpdate Permission = iota
  constant ProjectDelete (line 81) | ProjectDelete Permission = iota
  constant RegionRead (line 82) | RegionRead Permission = iota
  constant ReservedIpRead (line 83) | ReservedIpRead Permission = iota
  constant ReservedIpCreate (line 84) | ReservedIpCreate Permission = iota
  constant ReservedIpDelete (line 85) | ReservedIpDelete Permission = iota
  constant SizeRead (line 86) | SizeRead Permission = iota
  constant SnapshotRead (line 87) | SnapshotRead Permission = iota
  constant SnapshotDelete (line 88) | SnapshotDelete Permission = iota
  constant SshKeyRead (line 89) | SshKeyRead Permission = iota
  constant SshKeyCreate (line 90) | SshKeyCreate Permission = iota
  constant SshKeyUpdate (line 91) | SshKeyUpdate Permission = iota
  constant SshKeyDelete (line 92) | SshKeyDelete Permission = iota
  constant TagRead (line 93) | TagRead Permission = iota
  constant TagCreate (line 94) | TagCreate Permission = iota
  constant TagDelete (line 95) | TagDelete Permission = iota
  constant UptimeRead (line 96) | UptimeRead Permission = iota
  constant UptimeCreate (line 97) | UptimeCreate Permission = iota
  constant UptimeUpdate (line 98) | UptimeUpdate Permission = iota
  constant UptimeDelete (line 99) | UptimeDelete Permission = iota
  constant VpcPeeringRead (line 100) | VpcPeeringRead Permission = iota
  constant VpcPeeringCreate (line 101) | VpcPeeringCreate Permission = iota
  constant VpcPeeringUpdate (line 102) | VpcPeeringUpdate Permission = iota
  constant VpcPeeringDelete (line 103) | VpcPeeringDelete Permission = iota
  constant VpcRead (line 104) | VpcRead Permission = iota
  constant VpcCreate (line 105) | VpcCreate Permission = iota
  constant VpcUpdate (line 106) | VpcUpdate Permission = iota
  constant VpcDelete (line 107) | VpcDelete Permission = iota
  function PermissionFromString (line 533) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 541) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/dockerhub/dockerhub.go
  type Analyzer (line 18) | type Analyzer struct
    method Type (line 50) | func (a Analyzer) Type() analyzers.AnalyzerType {
    method Analyze (line 54) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  type SecretInfo (line 23) | type SecretInfo struct
  type User (line 34) | type User struct
  type Repository (line 41) | type Repository struct
  function AnalyzePermissions (line 74) | func AnalyzePermissions(cfg *config.Config, username, pat string) (*Secr...
  function AnalyzeAndPrintPermissions (line 99) | func AnalyzeAndPrintPermissions(cfg *config.Config, username, pat string) {
  function secretInfoToAnalyzerResult (line 125) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  function printUser (line 162) | func printUser(user User) {
  function printPermissions (line 171) | func printPermissions(permissions []string) {
  function printRepositories (line 182) | func printRepositories(repos []Repository) {

FILE: pkg/analyzer/analyzers/dockerhub/dockerhub_test.go
  function TestAnalyzer_Analyze (line 18) | func TestAnalyzer_Analyze(t *testing.T) {

FILE: pkg/analyzer/analyzers/dockerhub/helper.go
  function decodeTokenToSecretInfo (line 30) | func decodeTokenToSecretInfo(jwtToken string, secretInfo *SecretInfo) er...
  function repositoriesToSecretInfo (line 69) | func repositoriesToSecretInfo(username string, repos *RepositoriesRespon...
  function sortRepositories (line 97) | func sortRepositories(repos *RepositoriesResponse) {
  function assignHighestPermission (line 117) | func assignHighestPermission(permissions []string) string {
  function humandReadableTime (line 140) | func humandReadableTime(seconds int) string {

FILE: pkg/analyzer/analyzers/dockerhub/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 47) | func (p Permission) ToString() (string, error) {
    method ToID (line 55) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant RepoRead (line 10) | RepoRead Permission = iota
  constant RepoWrite (line 11) | RepoWrite Permission = iota
  constant RepoAdmin (line 12) | RepoAdmin Permission = iota
  constant RepoPublicRead (line 13) | RepoPublicRead Permission = iota
  function PermissionFromString (line 63) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 71) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/dockerhub/requests.go
  type LoginResponse (line 13) | type LoginResponse struct
  type ErrorLoginResponse (line 18) | type ErrorLoginResponse struct
  type RepositoriesResponse (line 24) | type RepositoriesResponse struct
  function login (line 35) | func login(client *http.Client, username, pat string) (string, error) {
  function fetchRepositories (line 79) | func fetchRepositories(client *http.Client, username, token string, secr...

FILE: pkg/analyzer/analyzers/dropbox/dropbox.go
  type Analyzer (line 28) | type Analyzer struct
    method Type (line 39) | func (a Analyzer) Type() analyzers.AnalyzerType {
    method Analyze (line 43) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  type PermissionStatus (line 31) | type PermissionStatus
  constant StatusGranted (line 34) | StatusGranted    PermissionStatus = "Granted"
  constant StatusDenied (line 35) | StatusDenied     PermissionStatus = "Denied"
  constant StatusUnverified (line 36) | StatusUnverified PermissionStatus = "Unverified"
  function AnalyzeAndPrintPermissions (line 57) | func AnalyzeAndPrintPermissions(cfg *config.Config, token string) {
  function AnalyzePermissions (line 74) | func AnalyzePermissions(cfg *config.Config, token string) (*secretInfo, ...
  function populateAccountInfo (line 110) | func populateAccountInfo(client *http.Client, info *secretInfo, token st...
  function testAllPermissions (line 127) | func testAllPermissions(client *http.Client, info *secretInfo, scopeConf...
  function testPermission (line 197) | func testPermission(client *http.Client, testEndpoint string, token stri...
  function callDropboxAPIEndpoint (line 217) | func callDropboxAPIEndpoint(client *http.Client, endpoint string, token ...
  function getScopeConfigMap (line 242) | func getScopeConfigMap() (*scopeConfig, error) {
  function secretInfoToAnalyzerResult (line 250) | func secretInfoToAnalyzerResult(info *secretInfo) *analyzers.AnalyzerRes...
  function getValidatedPermissions (line 280) | func getValidatedPermissions(info *secretInfo) []analyzers.Permission {
  function printAccountAndPermissions (line 295) | func printAccountAndPermissions(info *secretInfo) {

FILE: pkg/analyzer/analyzers/dropbox/dropbox_test.go
  function TestAnalyzer_Analyze (line 18) | func TestAnalyzer_Analyze(t *testing.T) {

FILE: pkg/analyzer/analyzers/dropbox/models.go
  type scopeConfig (line 3) | type scopeConfig struct
  type scope (line 7) | type scope struct
  type account (line 13) | type account struct
  type accountType (line 23) | type accountType struct
  type name (line 27) | type name struct
  type accountPermission (line 32) | type accountPermission struct
  type secretInfo (line 38) | type secretInfo struct

FILE: pkg/analyzer/analyzers/dropbox/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 102) | func (p Permission) ToString() (string, error) {
    method ToID (line 110) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant AccountInfoWrite (line 10) | AccountInfoWrite Permission = iota
  constant AccountInfoRead (line 11) | AccountInfoRead Permission = iota
  constant FilesMetadataWrite (line 12) | FilesMetadataWrite Permission = iota
  constant FilesMetadataRead (line 13) | FilesMetadataRead Permission = iota
  constant FilesContentWrite (line 14) | FilesContentWrite Permission = iota
  constant FilesContentRead (line 15) | FilesContentRead Permission = iota
  constant SharingWrite (line 16) | SharingWrite Permission = iota
  constant SharingRead (line 17) | SharingRead Permission = iota
  constant FileRequestsWrite (line 18) | FileRequestsWrite Permission = iota
  constant FileRequestsRead (line 19) | FileRequestsRead Permission = iota
  constant ContactsWrite (line 20) | ContactsWrite Permission = iota
  constant ContactsRead (line 21) | ContactsRead Permission = iota
  constant Openid (line 22) | Openid Permission = iota
  constant Profile (line 23) | Profile Permission = iota
  constant Email (line 24) | Email Permission = iota
  function PermissionFromString (line 118) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 126) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/elevenlabs/elevenlabs.go
  type Analyzer (line 24) | type Analyzer struct
    method Type (line 81) | func (a Analyzer) Type() analyzers.AnalyzerType {
    method Analyze (line 85) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  type SecretInfo (line 29) | type SecretInfo struct
    method AppendPermission (line 39) | func (s *SecretInfo) AppendPermission(perm string) {
    method HasPermission (line 47) | func (s *SecretInfo) HasPermission(perm Permission) bool {
    method AppendResource (line 57) | func (s *SecretInfo) AppendResource(resource ElevenLabsResource) {
  type User (line 65) | type User struct
  type ElevenLabsResource (line 73) | type ElevenLabsResource struct
  function AnalyzePermissions (line 101) | func AnalyzePermissions(cfg *config.Config, key string) (*SecretInfo, er...
  function AnalyzeAndPrintPermissions (line 129) | func AnalyzeAndPrintPermissions(cfg *config.Config, key string) {
  function secretInfoToAnalyzerResult (line 155) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  function fetchUser (line 216) | func fetchUser(client *http.Client, key string) (*User, error) {
  function elevenLabsUserToSecretInfoUser (line 257) | func elevenLabsUserToSecretInfoUser(user User, secretInfo *SecretInfo) {
  function getElevenLabsResources (line 276) | func getElevenLabsResources(client *http.Client, key string, secretInfo ...
  function printUser (line 439) | func printUser(user User) {
  function printPermissions (line 448) | func printPermissions(permissions []string) {
  function printElevenLabsResources (line 459) | func printElevenLabsResources(resources []ElevenLabsResource) {

FILE: pkg/analyzer/analyzers/elevenlabs/elevenlabs_test.go
  function TestAnalyzer_Analyze (line 19) | func TestAnalyzer_Analyze(t *testing.T) {
  function sortBindings (line 95) | func sortBindings(bindings []analyzers.Binding) {

FILE: pkg/analyzer/analyzers/elevenlabs/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 122) | func (p Permission) ToString() (string, error) {
    method ToID (line 130) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant TextToSpeech (line 10) | TextToSpeech Permission = iota
  constant SpeechToSpeech (line 11) | SpeechToSpeech Permission = iota
  constant AudioIsolation (line 12) | AudioIsolation Permission = iota
  constant DubbingRead (line 13) | DubbingRead Permission = iota
  constant DubbingWrite (line 14) | DubbingWrite Permission = iota
  constant ProjectsRead (line 15) | ProjectsRead Permission = iota
  constant ProjectsWrite (line 16) | ProjectsWrite Permission = iota
  constant AudioNativeRead (line 17) | AudioNativeRead Permission = iota
  constant AudioNativeWrite (line 18) | AudioNativeWrite Permission = iota
  constant PronunciationDictionariesRead (line 19) | PronunciationDictionariesRead Permission = iota
  constant PronunciationDictionariesWrite (line 20) | PronunciationDictionariesWrite Permission = iota
  constant VoicesRead (line 21) | VoicesRead Permission = iota
  constant VoicesWrite (line 22) | VoicesWrite Permission = iota
  constant ModelsRead (line 23) | ModelsRead Permission = iota
  constant SpeechHistoryRead (line 24) | SpeechHistoryRead Permission = iota
  constant SpeechHistoryWrite (line 25) | SpeechHistoryWrite Permission = iota
  constant UserRead (line 26) | UserRead Permission = iota
  constant WorkspaceRead (line 27) | WorkspaceRead Permission = iota
  constant WorkspaceWrite (line 28) | WorkspaceWrite Permission = iota
  function PermissionFromString (line 138) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 146) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/elevenlabs/requests.go
  type ErrorResponse (line 57) | type ErrorResponse struct
  type UserResponse (line 64) | type UserResponse struct
  type HistoryResponse (line 74) | type HistoryResponse struct
  type VoicesResponse (line 83) | type VoicesResponse struct
  type ProjectsResponse (line 92) | type ProjectsResponse struct
  type PronunciationDictionariesResponse (line 102) | type PronunciationDictionariesResponse struct
  type ModelsResponse (line 110) | type ModelsResponse struct
  type AgentsResponse (line 116) | type AgentsResponse struct
  type ConversationResponse (line 125) | type ConversationResponse struct
  function getAPIUrl (line 134) | func getAPIUrl(permission Permission) string {
  function makeElevenLabsRequest (line 144) | func makeElevenLabsRequest(client *http.Client, url, method, key string)...
  function makeElevenLabsRequestWithPayload (line 179) | func makeElevenLabsRequestWithPayload(client *http.Client, url, method, ...
  function getHistory (line 212) | func getHistory(client *http.Client, key string, secretInfo *SecretInfo)...
  function deleteHistory (line 247) | func deleteHistory(client *http.Client, key string, secretInfo *SecretIn...
  function deleteDubbing (line 266) | func deleteDubbing(client *http.Client, key string, secretInfo *SecretIn...
  function getDebugging (line 291) | func getDebugging(client *http.Client, key string, secretInfo *SecretInf...
  function getVoices (line 309) | func getVoices(client *http.Client, key string, secretInfo *SecretInfo) ...
  function deleteVoice (line 347) | func deleteVoice(client *http.Client, key string, secretInfo *SecretInfo...
  function getProjects (line 365) | func getProjects(client *http.Client, key string, secretInfo *SecretInfo...
  function deleteProject (line 407) | func deleteProject(client *http.Client, key string, secretInfo *SecretIn...
  function getPronunciationDictionaries (line 428) | func getPronunciationDictionaries(client *http.Client, key string, secre...
  function removePronunciationDictionariesRule (line 463) | func removePronunciationDictionariesRule(client *http.Client, key string...
  function getModels (line 488) | func getModels(client *http.Client, key string, secretInfo *SecretInfo) ...
  function updateAudioNativeProject (line 523) | func updateAudioNativeProject(client *http.Client, key string, secretInf...
  function deleteInviteFromWorkspace (line 558) | func deleteInviteFromWorkspace(client *http.Client, key string, secretIn...
  function textToSpeech (line 589) | func textToSpeech(client *http.Client, key string, secretInfo *SecretInf...
  function speechToSpeech (line 615) | func speechToSpeech(client *http.Client, key string, secretInfo *SecretI...
  function audioIsolation (line 646) | func audioIsolation(client *http.Client, key string, secretInfo *SecretI...
  function getAgents (line 676) | func getAgents(client *http.Client, key string, secretInfo *SecretInfo) ...
  function getConversation (line 715) | func getConversation(client *http.Client, key, agentID string, secretInf...
  function handleErrorStatus (line 751) | func handleErrorStatus(response []byte, permissionToAdd string, secretIn...
  function checkErrorStatus (line 770) | func checkErrorStatus(response []byte, expectedStatuses ...string) (bool...

FILE: pkg/analyzer/analyzers/fastly/fastly.go
  type Analyzer (line 17) | type Analyzer struct
    method Type (line 21) | func (a Analyzer) Type() analyzers.AnalyzerType {
    method Analyze (line 25) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  function AnalyzeAndPrintPermissions (line 41) | func AnalyzeAndPrintPermissions(cfg *config.Config, key string) {
  function AnalyzePermissions (line 68) | func AnalyzePermissions(cfg *config.Config, key string) (*SecretInfo, er...
  function secretInfoToAnalyzerResult (line 105) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  function secretInfoResourceToAnalyzerResource (line 137) | func secretInfoResourceToAnalyzerResource(resource FastlyResource) *anal...
  function printUserInfo (line 154) | func printUserInfo(user User) {
  function printScopes (line 164) | func printScopes(scopes []string) {
  function printResources (line 175) | func printResources(resources []FastlyResource) {

FILE: pkg/analyzer/analyzers/fastly/fastly_test.go
  function TestAnalyzer_Analyze (line 19) | func TestAnalyzer_Analyze(t *testing.T) {
  function sortBindings (line 95) | func sortBindings(bindings []analyzers.Binding) {

FILE: pkg/analyzer/analyzers/fastly/models.go
  constant TypeUserToken (line 7) | TypeUserToken             string = "User Token"
  constant TypeAutomationToken (line 8) | TypeAutomationToken       string = "Automation Token"
  constant TypeService (line 9) | TypeService               string = "Service"
  constant TypeSvcVersion (line 10) | TypeSvcVersion            string = "Service Version"
  constant TypeSvcVersionACL (line 11) | TypeSvcVersionACL         string = "Service Version ACL"
  constant TypeSvcVersionDict (line 12) | TypeSvcVersionDict        string = "Service Version Dictionary"
  constant TypeSvcVersionBackend (line 13) | TypeSvcVersionBackend     string = "Service Version Backend"
  constant TypeSvcVersionDomain (line 14) | TypeSvcVersionDomain      string = "Service Version Domain"
  constant TypeSvcVersionHealthCheck (line 15) | TypeSvcVersionHealthCheck string = "Service Version Health Check"
  constant TypeConfigStore (line 16) | TypeConfigStore           string = "Config Store"
  constant TypeSecretStore (line 17) | TypeSecretStore           string = "Secret Store"
  constant TypeTLSPrivateKey (line 18) | TypeTLSPrivateKey         string = "TLS Private Key"
  constant TypeTLSCertificate (line 19) | TypeTLSCertificate        string = "TLS Certificates"
  constant TypeTLSDomain (line 20) | TypeTLSDomain             string = "TLS Domain"
  constant TypeInvoice (line 21) | TypeInvoice               string = "Invoice"
  type SecretInfo (line 24) | type SecretInfo struct
    method appendResource (line 41) | func (s *SecretInfo) appendResource(resource FastlyResource) {
    method listResourceByType (line 49) | func (s *SecretInfo) listResourceByType(resourceType string) []FastlyR...
  type FastlyResource (line 32) | type FastlyResource struct
  type User (line 66) | type User struct
  type SelfToken (line 75) | type SelfToken struct
    method hasGlobalScope (line 87) | func (t SelfToken) hasGlobalScope() bool {
  type TokenData (line 98) | type TokenData struct
  type Token (line 103) | type Token struct
  type Service (line 112) | type Service struct
  type Version (line 119) | type Version struct
  type ACL (line 127) | type ACL struct
  type Dictionary (line 133) | type Dictionary struct
  type Backend (line 139) | type Backend struct
  type Domain (line 146) | type Domain struct
  type HealthCheck (line 151) | type HealthCheck struct
  type ConfigStore (line 159) | type ConfigStore struct
  type SecretStoreData (line 165) | type SecretStoreData struct
  type SecretStore (line 170) | type SecretStore struct
  type TLSPrivateKeyData (line 176) | type TLSPrivateKeyData struct
  type TLSPrivateKey (line 181) | type TLSPrivateKey struct
  type TLSCertificatesData (line 187) | type TLSCertificatesData struct
  type TLSCertificate (line 192) | type TLSCertificate struct
  type TLSDomainsData (line 198) | type TLSDomainsData struct
  type TLSDomain (line 203) | type TLSDomain struct
  type InvoicesData (line 208) | type InvoicesData struct
  type Invoice (line 213) | type Invoice struct

FILE: pkg/analyzer/analyzers/fastly/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 47) | func (p Permission) ToString() (string, error) {
    method ToID (line 55) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant Global (line 10) | Global Permission = iota
  constant GlobalRead (line 11) | GlobalRead Permission = iota
  constant PurgeAll (line 12) | PurgeAll Permission = iota
  constant PurgeSelect (line 13) | PurgeSelect Permission = iota
  function PermissionFromString (line 63) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 71) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/fastly/requests.go
  type endpoint (line 13) | type endpoint
  constant selfToken (line 17) | selfToken endpoint = iota
  constant currentUser (line 18) | currentUser
  constant userTokens (line 19) | userTokens
  constant automationTokens (line 20) | automationTokens
  constant service (line 21) | service
  constant serviceVersions (line 22) | serviceVersions
  constant serviceVersionACLs (line 23) | serviceVersionACLs
  constant serviceVersionDictionaries (line 24) | serviceVersionDictionaries
  constant serviceVersionBackends (line 25) | serviceVersionBackends
  constant serviceVersionDomains (line 26) | serviceVersionDomains
  constant serviceVersionHealthChecks (line 27) | serviceVersionHealthChecks
  constant configStores (line 28) | configStores
  constant secretStores (line 29) | secretStores
  constant tlsPrivateKeys (line 30) | tlsPrivateKeys
  constant tlsCertificates (line 31) | tlsCertificates
  constant tlsDomains (line 32) | tlsDomains
  constant invoices (line 33) | invoices
  function makeFastlyRequest (line 74) | func makeFastlyRequest(client *http.Client, endpoint, key string) ([]byt...
  function captureResources (line 103) | func captureResources(client *http.Client, key string, secretInfo *Secre...
  function captureTokenInfo (line 178) | func captureTokenInfo(client *http.Client, key string, secretInfo *Secre...
  function captureUserInfo (line 207) | func captureUserInfo(client *http.Client, key string, secretInfo *Secret...
  function captureUserTokens (line 232) | func captureUserTokens(client *http.Client, key string, secretInfo *Secr...
  function captureAutomationTokens (line 270) | func captureAutomationTokens(client *http.Client, key string, secretInfo...
  function captureServices (line 308) | func captureServices(client *http.Client, key string, secretInfo *Secret...
  function captureSvcVersions (line 344) | func captureSvcVersions(client *http.Client, key string, parentService F...
  function captureSvcVersionACLs (line 379) | func captureSvcVersionACLs(client *http.Client, key string, parentVersio...
  function captureSvcVersionDicts (line 413) | func captureSvcVersionDicts(client *http.Client, key string, parentVersi...
  function captureSvcVersionBackends (line 447) | func captureSvcVersionBackends(client *http.Client, key string, parentVe...
  function captureSvcVersionDomains (line 481) | func captureSvcVersionDomains(client *http.Client, key string, parentVer...
  function captureSvcVersionHealthChecks (line 515) | func captureSvcVersionHealthChecks(client *http.Client, key string, pare...
  function captureConfigStores (line 549) | func captureConfigStores(client *http.Client, key string, secretInfo *Se...
  function captureSecretStores (line 582) | func captureSecretStores(client *http.Client, key string, secretInfo *Se...
  function capturePrivateKeys (line 615) | func capturePrivateKeys(client *http.Client, key string, secretInfo *Sec...
  function captureCertificates (line 648) | func captureCertificates(client *http.Client, key string, secretInfo *Se...
  function captureTLSDomains (line 681) | func captureTLSDomains(client *http.Client, key string, secretInfo *Secr...
  function captureInvoices (line 714) | func captureInvoices(client *http.Client, key string, secretInfo *Secret...

FILE: pkg/analyzer/analyzers/figma/figma.go
  type Analyzer (line 26) | type Analyzer struct
    method Type (line 30) | func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.Analy...
    method Analyze (line 41) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  type ScopeStatus (line 32) | type ScopeStatus
  constant StatusError (line 35) | StatusError      ScopeStatus = "Error"
  constant StatusGranted (line 36) | StatusGranted    ScopeStatus = "Granted"
  constant StatusDenied (line 37) | StatusDenied     ScopeStatus = "Denied"
  constant StatusUnverified (line 38) | StatusUnverified ScopeStatus = "Unverified"
  function AnalyzeAndPrintPermissions (line 53) | func AnalyzeAndPrintPermissions(cfg *config.Config, token string) {
  function AnalyzePermissions (line 64) | func AnalyzePermissions(cfg *config.Config, token string) (*secretInfo, ...
  function determineScopeStatus (line 123) | func determineScopeStatus(statusCode int, endpoint endpoint) ScopeStatus {
  function extractScopesFromError (line 138) | func extractScopesFromError(body []byte) ([]Scope, bool) {
  function filterErrorResponseBody (line 151) | func filterErrorResponseBody(msg string) string {
  function MapToAnalyzerResult (line 158) | func MapToAnalyzerResult(info *secretInfo) *analyzers.AnalyzerResult {
  function PrintUserAndPermissions (line 187) | func PrintUserAndPermissions(info *secretInfo) {

FILE: pkg/analyzer/analyzers/figma/figma_test.go
  function TestAnalyzer_Analyze (line 19) | func TestAnalyzer_Analyze(t *testing.T) {
  function sortBindings (line 93) | func sortBindings(bindings []analyzers.Binding) {

FILE: pkg/analyzer/analyzers/figma/models.go
  type userInfo (line 3) | type userInfo struct
  type secretInfo (line 10) | type secretInfo struct
  type endpoint (line 15) | type endpoint struct

FILE: pkg/analyzer/analyzers/figma/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 67) | func (p Permission) ToString() (string, error) {
    method ToID (line 75) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant FilesRead (line 10) | FilesRead Permission = iota
  constant FileVariablesRead (line 11) | FileVariablesRead Permission = iota
  constant FileVariablesWrite (line 12) | FileVariablesWrite Permission = iota
  constant FileCommentsWrite (line 13) | FileCommentsWrite Permission = iota
  constant FileDevResourcesRead (line 14) | FileDevResourcesRead Permission = iota
  constant FileDevResourcesWrite (line 15) | FileDevResourcesWrite Permission = iota
  constant LibraryAnalyticsRead (line 16) | LibraryAnalyticsRead Permission = iota
  constant WebhooksWrite (line 17) | WebhooksWrite Permission = iota
  function PermissionFromString (line 83) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 91) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/figma/requests.go
  function callAPIEndpoint (line 7) | func callAPIEndpoint(client *http.Client, token string, endpoint endpoin...

FILE: pkg/analyzer/analyzers/figma/scopes.go
  type Scope (line 9) | type Scope
  constant ScopeFilesRead (line 12) | ScopeFilesRead             Scope = "files:read"
  constant ScopeFileVariablesRead (line 13) | ScopeFileVariablesRead     Scope = "file_variables:read"
  constant ScopeFileVariablesWrite (line 14) | ScopeFileVariablesWrite    Scope = "file_variables:write"
  constant ScopeFileCommentsWrite (line 15) | ScopeFileCommentsWrite     Scope = "file_comments:write"
  constant ScopeFileDevResourcesRead (line 16) | ScopeFileDevResourcesRead  Scope = "file_dev_resources:read"
  constant ScopeFileDevResourcesWrite (line 17) | ScopeFileDevResourcesWrite Scope = "file_dev_resources:write"
  constant ScopeLibraryAnalyticsRead (line 18) | ScopeLibraryAnalyticsRead  Scope = "library_analytics:read"
  constant ScopeWebhooksWrite (line 19) | ScopeWebhooksWrite         Scope = "webhooks:write"
  function init (line 74) | func init() {
  function getScopeActions (line 87) | func getScopeActions(scope Scope) []string {
  function getScopeEndpointsMap (line 91) | func getScopeEndpointsMap() (map[Scope]endpoint, error) {
  function getScopeEndpoint (line 99) | func getScopeEndpoint(scopeToEndpoint map[Scope]endpoint, scope Scope) (...
  function getScopesFromScopeStrings (line 106) | func getScopesFromScopeStrings(scopeStrings []string) []Scope {
  function getAllScopes (line 116) | func getAllScopes() []Scope {

FILE: pkg/analyzer/analyzers/github/classic/classic_permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 267) | func (p Permission) ToString() (string, error) {
    method ToID (line 275) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant Repo (line 10) | Repo Permission = iota
  constant RepoStatus (line 11) | RepoStatus Permission = iota
  constant RepoDeployment (line 12) | RepoDeployment Permission = iota
  constant PublicRepo (line 13) | PublicRepo Permission = iota
  constant RepoInvite (line 14) | RepoInvite Permission = iota
  constant SecurityEvents (line 15) | SecurityEvents Permission = iota
  constant Workflow (line 16) | Workflow Permission = iota
  constant WritePackages (line 17) | WritePackages Permission = iota
  constant ReadPackages (line 18) | ReadPackages Permission = iota
  constant DeletePackages (line 19) | DeletePackages Permission = iota
  constant AdminOrg (line 20) | AdminOrg Permission = iota
  constant WriteOrg (line 21) | WriteOrg Permission = iota
  constant ReadOrg (line 22) | ReadOrg Permission = iota
  constant ManageRunnersOrg (line 23) | ManageRunnersOrg Permission = iota
  constant AdminPublicKey (line 24) | AdminPublicKey Permission = iota
  constant WritePublicKey (line 25) | WritePublicKey Permission = iota
  constant ReadPublicKey (line 26) | ReadPublicKey Permission = iota
  constant AdminRepoHook (line 27) | AdminRepoHook Permission = iota
  constant WriteRepoHook (line 28) | WriteRepoHook Permission = iota
  constant ReadRepoHook (line 29) | ReadRepoHook Permission = iota
  constant AdminOrgHook (line 30) | AdminOrgHook Permission = iota
  constant Gist (line 31) | Gist Permission = iota
  constant Notifications (line 32) | Notifications Permission = iota
  constant User (line 33) | User Permission = iota
  constant ReadUser (line 34) | ReadUser Permission = iota
  constant UserEmail (line 35) | UserEmail Permission = iota
  constant UserFollow (line 36) | UserFollow Permission = iota
  constant DeleteRepo (line 37) | DeleteRepo Permission = iota
  constant WriteDiscussion (line 38) | WriteDiscussion Permission = iota
  constant ReadDiscussion (line 39) | ReadDiscussion Permission = iota
  constant AdminEnterprise (line 40) | AdminEnterprise Permission = iota
  constant ManageRunnersEnterprise (line 41) | ManageRunnersEnterprise Permission = iota
  constant ManageBillingEnterprise (line 42) | ManageBillingEnterprise Permission = iota
  constant ReadEnterprise (line 43) | ReadEnterprise Permission = iota
  constant AuditLog (line 44) | AuditLog Permission = iota
  constant ReadAuditLog (line 45) | ReadAuditLog Permission = iota
  constant Codespace (line 46) | Codespace Permission = iota
  constant CodespaceSecrets (line 47) | CodespaceSecrets Permission = iota
  constant Copilot (line 48) | Copilot Permission = iota
  constant ManageBillingCopilot (line 49) | ManageBillingCopilot Permission = iota
  constant Project (line 50) | Project Permission = iota
  constant ReadProject (line 51) | ReadProject Permission = iota
  constant AdminGpgKey (line 52) | AdminGpgKey Permission = iota
  constant WriteGpgKey (line 53) | WriteGpgKey Permission = iota
  constant ReadGpgKey (line 54) | ReadGpgKey Permission = iota
  constant AdminSshSigningKey (line 55) | AdminSshSigningKey Permission = iota
  constant WriteSshSigningKey (line 56) | WriteSshSigningKey Permission = iota
  constant ReadSshSigningKey (line 57) | ReadSshSigningKey Permission = iota
  function PermissionFromString (line 283) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 291) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/github/classic/classictoken.go
  function hasPrivateRepoAccess (line 65) | func hasPrivateRepoAccess(scopes map[Permission]bool) bool {
  function processScopes (line 69) | func processScopes(headerScopesSlice []analyzers.Permission) map[Permiss...
  function AnalyzeClassicToken (line 84) | func AnalyzeClassicToken(client *gh.Client, meta *common.TokenMetadata) ...
  function filterPrivateRepoScopes (line 110) | func filterPrivateRepoScopes(scopes map[Permission]bool) []Permission {
  function PrintClassicToken (line 122) | func PrintClassicToken(cfg *config.Config, info *common.SecretInfo) {
  function joinPermissions (line 144) | func joinPermissions(perms []Permission) string {
  function scopeFormatter (line 156) | func scopeFormatter(scope Permission, checked bool, indentation int) (st...
  function printClassicGHPermissions (line 170) | func printClassicGHPermissions(scopes map[Permission]bool, showAll bool) {
  function oauthScopesToPermissions (line 254) | func oauthScopesToPermissions(scopes ...analyzers.Permission) []analyzer...
  function oauthScopeToPermissions (line 266) | func oauthScopeToPermissions(scope string) []analyzers.Permission {

FILE: pkg/analyzer/analyzers/github/common/github.go
  type TokenType (line 17) | type TokenType
  constant TokenTypeFineGrainedPAT (line 20) | TokenTypeFineGrainedPAT TokenType = "Fine-Grained GitHub Personal Access...
  constant TokenTypeClassicPAT (line 21) | TokenTypeClassicPAT     TokenType = "Classic GitHub Personal Access Token"
  constant TokenTypeUserToServer (line 22) | TokenTypeUserToServer   TokenType = "GitHub User-to-Server Token"
  constant TokenTypeGitHubToken (line 23) | TokenTypeGitHubToken    TokenType = "GitHub Token"
  function checkFineGrained (line 26) | func checkFineGrained(token string, oauthScopes []analyzers.Permission) ...
  type Permission (line 53) | type Permission
  type SecretInfo (line 55) | type SecretInfo struct
  type TokenMetadata (line 66) | type TokenMetadata struct
  function GetTokenMetadata (line 78) | func GetTokenMetadata(token string, client *gh.Client) (*TokenMetadata, ...
  function GetAllGistsForUser (line 109) | func GetAllGistsForUser(client *gh.Client) ([]*gh.Gist, error) {
  function GetAllReposForUser (line 133) | func GetAllReposForUser(client *gh.Client) ([]*gh.Repository, error) {
  function PrintGitHubRepos (line 156) | func PrintGitHubRepos(repos []*gh.Repository) {
  function PrintGists (line 172) | func PrintGists(gists []*gh.Gist, showAll bool) {

FILE: pkg/analyzer/analyzers/github/finegrained/finegrained.go
  constant RANDOM_STRING (line 23) | RANDOM_STRING   = "FQ2pR.4voZg-gJfsqYKx_eLDNF_6BYhw8RL__"
  constant RANDOM_USERNAME (line 24) | RANDOM_USERNAME = "d" + "ummy" + "acco" + "untgh" + "2024"
  constant RANDOM_REPO (line 25) | RANDOM_REPO     = "te" + "st"
  constant RANDOM_INTEGER (line 26) | RANDOM_INTEGER  = 4294967289
  function permissionFormatter (line 77) | func permissionFormatter(key, val any) (string, string) {
  function notImplementedRepoPerm (line 108) | func notImplementedRepoPerm(client *gh.Client, repo *gh.Repository, curr...
  function notImplementedAcctPerm (line 113) | func notImplementedAcctPerm(client *gh.Client, user *gh.User) (Permissio...
  function getMetadataPermission (line 117) | func getMetadataPermission(client *gh.Client, repo *gh.Repository, curre...
  function getActionsPermission (line 132) | func getActionsPermission(client *gh.Client, repo *gh.Repository, curren...
  function getAdministrationPermission (line 186) | func getAdministrationPermission(client *gh.Client, repo *gh.Repository,...
  function getCodeScanningAlertsPermission (line 216) | func getCodeScanningAlertsPermission(client *gh.Client, repo *gh.Reposit...
  function getCodespacesPermission (line 250) | func getCodespacesPermission(client *gh.Client, repo *gh.Repository, cur...
  function getCodespacesMetadataPermission (line 282) | func getCodespacesMetadataPermission(client *gh.Client, repo *gh.Reposit...
  function getCodespacesSecretsPermission (line 300) | func getCodespacesSecretsPermission(client *gh.Client, repo *gh.Reposito...
  function getCommitStatusesPermission (line 320) | func getCommitStatusesPermission(client *gh.Client, repo *gh.Repository,...
  function getContentsPermission (line 372) | func getContentsPermission(client *gh.Client, repo *gh.Repository, curre...
  function getDependabotAlertsPermission (line 426) | func getDependabotAlertsPermission(client *gh.Client, repo *gh.Repositor...
  function getDependabotSecretsPermission (line 456) | func getDependabotSecretsPermission(client *gh.Client, repo *gh.Reposito...
  function getDeploymentsPermission (line 486) | func getDeploymentsPermission(client *gh.Client, repo *gh.Repository, cu...
  function getEnvironmentsPermission (line 516) | func getEnvironmentsPermission(client *gh.Client, repo *gh.Repository, c...
  function getIssuesPermission (line 557) | func getIssuesPermission(client *gh.Client, repo *gh.Repository, current...
  function getPagesPermission (line 611) | func getPagesPermission(client *gh.Client, repo *gh.Repository, currentA...
  function getPullRequestsPermission (line 671) | func getPullRequestsPermission(client *gh.Client, repo *gh.Repository, c...
  function getRepoSecurityPermission (line 723) | func getRepoSecurityPermission(client *gh.Client, repo *gh.Repository, c...
  function getSecretScanningPermission (line 784) | func getSecretScanningPermission(client *gh.Client, repo *gh.Repository,...
  function getSecretsPermission (line 814) | func getSecretsPermission(client *gh.Client, repo *gh.Repository, curren...
  function getVariablesPermission (line 844) | func getVariablesPermission(client *gh.Client, repo *gh.Repository, curr...
  function getWebhooksPermission (line 874) | func getWebhooksPermission(client *gh.Client, repo *gh.Repository, curre...
  function analyzeRepositoryPermissions (line 908) | func analyzeRepositoryPermissions(client *gh.Client, repos []*gh.Reposit...
  function getBlockUserPermission (line 925) | func getBlockUserPermission(client *gh.Client, user *gh.User) (Permissio...
  function getCodespacesUserPermission (line 955) | func getCodespacesUserPermission(client *gh.Client, user *gh.User) (Perm...
  function getEmailPermission (line 985) | func getEmailPermission(client *gh.Client, user *gh.User) (Permission, e...
  function getFollowersPermission (line 1014) | func getFollowersPermission(client *gh.Client, user *gh.User) (Permissio...
  function getGPGKeysPermission (line 1043) | func getGPGKeysPermission(client *gh.Client, user *gh.User) (Permission,...
  function getGistsPermission (line 1073) | func getGistsPermission(client *gh.Client, user *gh.User) (Permission, e...
  function getGitKeysPermission (line 1091) | func getGitKeysPermission(client *gh.Client, user *gh.User) (Permission,...
  function getLimitsPermission (line 1121) | func getLimitsPermission(client *gh.Client, user *gh.User) (Permission, ...
  function getPlanPermission (line 1159) | func getPlanPermission(client *gh.Client, user *gh.User) (Permission, er...
  function getProfilePermission (line 1173) | func getProfilePermission(client *gh.Client, user *gh.User) (Permission,...
  function getSigningKeysPermission (line 1195) | func getSigningKeysPermission(client *gh.Client, user *gh.User) (Permiss...
  function getStarringPermission (line 1225) | func getStarringPermission(client *gh.Client, user *gh.User) (Permission...
  function getWatchingPermission (line 1232) | func getWatchingPermission(client *gh.Client, user *gh.User) (Permission...
  function analyzeUserPermissions (line 1238) | func analyzeUserPermissions(client *gh.Client, user *gh.User) ([]Permiss...
  function AnalyzeFineGrainedToken (line 1252) | func AnalyzeFineGrainedToken(client *gh.Client, meta *common.TokenMetada...
  function PrintFineGrainedToken (line 1310) | func PrintFineGrainedToken(cfg *config.Config, info *common.SecretInfo) {
  function printFineGrainedPermissions (line 1336) | func printFineGrainedPermissions(accessMap []Permission, showAll bool, r...

FILE: pkg/analyzer/analyzers/github/finegrained/finegrained_permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 422) | func (p Permission) ToString() (string, error) {
    method ToID (line 430) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant NoAccess (line 10) | NoAccess Permission = iota
  constant ActionsRead (line 11) | ActionsRead Permission = iota
  constant ActionsWrite (line 12) | ActionsWrite Permission = iota
  constant AdministrationRead (line 13) | AdministrationRead Permission = iota
  constant AdministrationWrite (line 14) | AdministrationWrite Permission = iota
  constant CodeScanningAlertsRead (line 15) | CodeScanningAlertsRead Permission = iota
  constant CodeScanningAlertsWrite (line 16) | CodeScanningAlertsWrite Permission = iota
  constant CodespacesRead (line 17) | CodespacesRead Permission = iota
  constant CodespacesWrite (line 18) | CodespacesWrite Permission = iota
  constant CodespacesLifecycleRead (line 19) | CodespacesLifecycleRead Permission = iota
  constant CodespacesLifecycleWrite (line 20) | CodespacesLifecycleWrite Permission = iota
  constant CodespacesMetadataRead (line 21) | CodespacesMetadataRead Permission = iota
  constant CodespacesMetadataWrite (line 22) | CodespacesMetadataWrite Permission = iota
  constant CodespacesSecretsRead (line 23) | CodespacesSecretsRead Permission = iota
  constant CodespacesSecretsWrite (line 24) | CodespacesSecretsWrite Permission = iota
  constant CommitStatusesRead (line 25) | CommitStatusesRead Permission = iota
  constant CommitStatusesWrite (line 26) | CommitStatusesWrite Permission = iota
  constant ContentsRead (line 27) | ContentsRead Permission = iota
  constant ContentsWrite (line 28) | ContentsWrite Permission = iota
  constant CustomPropertiesRead (line 29) | CustomPropertiesRead Permission = iota
  constant CustomPropertiesWrite (line 30) | CustomPropertiesWrite Permission = iota
  constant DependabotAlertsRead (line 31) | DependabotAlertsRead Permission = iota
  constant DependabotAlertsWrite (line 32) | DependabotAlertsWrite Permission = iota
  constant DependabotSecretsRead (line 33) | DependabotSecretsRead Permission = iota
  constant DependabotSecretsWrite (line 34) | DependabotSecretsWrite Permission = iota
  constant DeploymentsRead (line 35) | DeploymentsRead Permission = iota
  constant DeploymentsWrite (line 36) | DeploymentsWrite Permission = iota
  constant EnvironmentsRead (line 37) | EnvironmentsRead Permission = iota
  constant EnvironmentsWrite (line 38) | EnvironmentsWrite Permission = iota
  constant IssuesRead (line 39) | IssuesRead Permission = iota
  constant IssuesWrite (line 40) | IssuesWrite Permission = iota
  constant MergeQueuesRead (line 41) | MergeQueuesRead Permission = iota
  constant MergeQueuesWrite (line 42) | MergeQueuesWrite Permission = iota
  constant MetadataRead (line 43) | MetadataRead Permission = iota
  constant MetadataWrite (line 44) | MetadataWrite Permission = iota
  constant PagesRead (line 45) | PagesRead Permission = iota
  constant PagesWrite (line 46) | PagesWrite Permission = iota
  constant PullRequestsRead (line 47) | PullRequestsRead Permission = iota
  constant PullRequestsWrite (line 48) | PullRequestsWrite Permission = iota
  constant RepoSecurityRead (line 49) | RepoSecurityRead Permission = iota
  constant RepoSecurityWrite (line 50) | RepoSecurityWrite Permission = iota
  constant SecretScanningRead (line 51) | SecretScanningRead Permission = iota
  constant SecretScanningWrite (line 52) | SecretScanningWrite Permission = iota
  constant SecretsRead (line 53) | SecretsRead Permission = iota
  constant SecretsWrite (line 54) | SecretsWrite Permission = iota
  constant VariablesRead (line 55) | VariablesRead Permission = iota
  constant VariablesWrite (line 56) | VariablesWrite Permission = iota
  constant WebhooksRead (line 57) | WebhooksRead Permission = iota
  constant WebhooksWrite (line 58) | WebhooksWrite Permission = iota
  constant WorkflowsRead (line 59) | WorkflowsRead Permission = iota
  constant WorkflowsWrite (line 60) | WorkflowsWrite Permission = iota
  constant BlockUserRead (line 61) | BlockUserRead Permission = iota
  constant BlockUserWrite (line 62) | BlockUserWrite Permission = iota
  constant CodespaceUserSecretsRead (line 63) | CodespaceUserSecretsRead Permission = iota
  constant CodespaceUserSecretsWrite (line 64) | CodespaceUserSecretsWrite Permission = iota
  constant EmailRead (line 65) | EmailRead Permission = iota
  constant EmailWrite (line 66) | EmailWrite Permission = iota
  constant FollowersRead (line 67) | FollowersRead Permission = iota
  constant FollowersWrite (line 68) | FollowersWrite Permission = iota
  constant GpgKeysRead (line 69) | GpgKeysRead Permission = iota
  constant GpgKeysWrite (line 70) | GpgKeysWrite Permission = iota
  constant GistsRead (line 71) | GistsRead Permission = iota
  constant GistsWrite (line 72) | GistsWrite Permission = iota
  constant GitKeysRead (line 73) | GitKeysRead Permission = iota
  constant GitKeysWrite (line 74) | GitKeysWrite Permission = iota
  constant LimitsRead (line 75) | LimitsRead Permission = iota
  constant LimitsWrite (line 76) | LimitsWrite Permission = iota
  constant PlanRead (line 77) | PlanRead Permission = iota
  constant PlanWrite (line 78) | PlanWrite Permission = iota
  constant PrivateInvitesRead (line 79) | PrivateInvitesRead Permission = iota
  constant PrivateInvitesWrite (line 80) | PrivateInvitesWrite Permission = iota
  constant ProfileRead (line 81) | ProfileRead Permission = iota
  constant ProfileWrite (line 82) | ProfileWrite Permission = iota
  constant SigningKeysRead (line 83) | SigningKeysRead Permission = iota
  constant SigningKeysWrite (line 84) | SigningKeysWrite Permission = iota
  constant StarringRead (line 85) | StarringRead Permission = iota
  constant StarringWrite (line 86) | StarringWrite Permission = iota
  constant WatchingRead (line 87) | WatchingRead Permission = iota
  constant WatchingWrite (line 88) | WatchingWrite Permission = iota
  function PermissionFromString (line 438) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 446) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/github/finegrained/finegrained_test.go
  function TestAnalyzer_Analyze (line 16) | func TestAnalyzer_Analyze(t *testing.T) {

FILE: pkg/analyzer/analyzers/github/github.go
  type Analyzer (line 29) | type Analyzer struct
    method Type (line 33) | func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.Analy...
    method Analyze (line 35) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  function secretInfoToAnalyzerResult (line 43) | func secretInfoToAnalyzerResult(info *common.SecretInfo) *analyzers.Anal...
  function secretInfoToUserBindings (line 78) | func secretInfoToUserBindings(info *common.SecretInfo) []analyzers.Bindi...
  function userToResource (line 82) | func userToResource(user *gh.User) *analyzers.Resource {
  function secretInfoToRepoBindings (line 91) | func secretInfoToRepoBindings(info *common.SecretInfo) []analyzers.Bindi...
  function secretInfoToGistBindings (line 125) | func secretInfoToGistBindings(info *common.SecretInfo) []analyzers.Bindi...
  function AnalyzePermissions (line 139) | func AnalyzePermissions(cfg *config.Config, key string) (*common.SecretI...
  function AnalyzeAndPrintPermissions (line 157) | func AnalyzeAndPrintPermissions(cfg *config.Config, key string) {
  function roughHumanReadableDuration (line 183) | func roughHumanReadableDuration(d time.Duration) string {

FILE: pkg/analyzer/analyzers/github/github_test.go
  function TestAnalyzer_Analyze (line 14) | func TestAnalyzer_Analyze(t *testing.T) {

FILE: pkg/analyzer/analyzers/gitlab/gitlab.go
  constant DefaultGitLabHost (line 25) | DefaultGitLabHost = "https://gitlab.com"
  type Analyzer (line 28) | type Analyzer struct
    method Type (line 32) | func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.Analy...
    method Analyze (line 34) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  function secretInfoToAnalyzerResult (line 51) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  type AccessTokenJSON (line 112) | type AccessTokenJSON struct
  type ProjectsJSON (line 123) | type ProjectsJSON struct
  type ErrorJSON (line 133) | type ErrorJSON struct
  type MetadataJSON (line 138) | type MetadataJSON struct
  function getPersonalAccessToken (line 143) | func getPersonalAccessToken(cfg *config.Config, key, host string) (Acces...
  function getAccessibleProjects (line 165) | func getAccessibleProjects(cfg *config.Config, key, host string) ([]Proj...
  function getMetadata (line 207) | func getMetadata(cfg *config.Config, key, host string) (MetadataJSON, er...
  type SecretInfo (line 248) | type SecretInfo struct
  function AnalyzePermissions (line 254) | func AnalyzePermissions(cfg *config.Config, key string, host string) (*S...
  function AnalyzeAndPrintPermissions (line 281) | func AnalyzeAndPrintPermissions(cfg *config.Config, key string) {
  function getRemainingTime (line 305) | func getRemainingTime(t string) string {
  function printTokenInfo (line 322) | func printTokenInfo(token AccessTokenJSON) {
  function printMetadata (line 334) | func printMetadata(metadata MetadataJSON) {
  function printTokenPermissions (line 340) | func printTokenPermissions(token AccessTokenJSON) {
  function printProjects (line 354) | func printProjects(projects []ProjectsJSON) {

FILE: pkg/analyzer/analyzers/gitlab/gitlab_test.go
  function TestAnalyzer_Analyze (line 17) | func TestAnalyzer_Analyze(t *testing.T) {

FILE: pkg/analyzer/analyzers/gitlab/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 97) | func (p Permission) ToString() (string, error) {
    method ToID (line 105) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant Api (line 10) | Api Permission = iota
  constant ReadUser (line 11) | ReadUser Permission = iota
  constant ReadApi (line 12) | ReadApi Permission = iota
  constant ReadRepository (line 13) | ReadRepository Permission = iota
  constant WriteRepository (line 14) | WriteRepository Permission = iota
  constant ReadRegistry (line 15) | ReadRegistry Permission = iota
  constant WriteRegistry (line 16) | WriteRegistry Permission = iota
  constant Sudo (line 17) | Sudo Permission = iota
  constant AdminMode (line 18) | AdminMode Permission = iota
  constant CreateRunner (line 19) | CreateRunner Permission = iota
  constant ManageRunner (line 20) | ManageRunner Permission = iota
  constant AiFeatures (line 21) | AiFeatures Permission = iota
  constant K8sProxy (line 22) | K8sProxy Permission = iota
  constant ReadServicePing (line 23) | ReadServicePing Permission = iota
  function PermissionFromString (line 113) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 121) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/groq/groq.go
  type Analyzer (line 18) | type Analyzer struct
    method Type (line 54) | func (a Analyzer) Type() analyzers.AnalyzerType {
    method Analyze (line 58) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  type SecretInfo (line 23) | type SecretInfo struct
    method appendGroqResource (line 41) | func (s *SecretInfo) appendGroqResource(resource GroqResource) {
  type GroqResource (line 32) | type GroqResource struct
    method updateMetadata (line 46) | func (g GroqResource) updateMetadata(key, value string) {
  function AnalyzeAndPrintPermissions (line 72) | func AnalyzeAndPrintPermissions(cfg *config.Config, key string) {
  function AnalyzePermissions (line 96) | func AnalyzePermissions(cfg *config.Config, apiKey string) (*SecretInfo,...
  function secretInfoToAnalyzerResult (line 114) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  function printGroqResources (line 149) | func printGroqResources(resources []GroqResource) {

FILE: pkg/analyzer/analyzers/groq/groq_test.go
  function TestAnalyzer_Analyze (line 15) | func TestAnalyzer_Analyze(t *testing.T) {

FILE: pkg/analyzer/analyzers/groq/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 32) | func (p Permission) ToString() (string, error) {
    method ToID (line 40) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant FullAccess (line 10) | FullAccess Permission = iota
  function PermissionFromString (line 48) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 56) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/groq/requests.go
  type errorResponse (line 17) | type errorResponse struct
  type listBatchesResponse (line 26) | type listBatchesResponse struct
  type batch (line 31) | type batch struct
  type listFilesResponse (line 41) | type listFilesResponse struct
  type file (line 46) | type file struct
  function isPermissionError (line 54) | func isPermissionError(err errorResponse) bool {
  function makeGroqRequest (line 64) | func makeGroqRequest(client *http.Client, url, key string) ([]byte, int,...
  function captureBatches (line 94) | func captureBatches(client *http.Client, key string, secretInfo *SecretI...
  function captureFiles (line 143) | func captureFiles(client *http.Client, key string, secretInfo *SecretInf...

FILE: pkg/analyzer/analyzers/huggingface/huggingface.go
  constant FINEGRAINED (line 20) | FINEGRAINED = "fineGrained"
  constant WRITE (line 21) | WRITE       = "write"
  constant READ (line 22) | READ        = "read"
  type Analyzer (line 27) | type Analyzer struct
    method Type (line 31) | func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.Analy...
    method Analyze (line 33) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  function bakeUnboundedResources (line 46) | func bakeUnboundedResources(tokenJSON HFTokenJSON) []analyzers.Resource {
  function bakeUnfineGrainedBindings (line 62) | func bakeUnfineGrainedBindings(allModels []Model, tokenJSON HFTokenJSON)...
  function bakefineGrainedBindings (line 92) | func bakefineGrainedBindings(allModels []Model, tokenJSON HFTokenJSON) [...
  function bakeOrganizationBindings (line 145) | func bakeOrganizationBindings(tokenJSON HFTokenJSON) []analyzers.Binding {
  function bakeUserBindings (line 188) | func bakeUserBindings(tokenJSON HFTokenJSON) []analyzers.Binding {
  function secretInfoToAnalyzerResult (line 235) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  type HFTokenJSON (line 268) | type HFTokenJSON struct
  type Permissions (line 296) | type Permissions struct
  type Model (line 301) | type Model struct
  function getModelsByAuthor (line 310) | func getModelsByAuthor(cfg *config.Config, key string, author string) ([...
  function getTokenInfo (line 346) | func getTokenInfo(cfg *config.Config, key string) (HFTokenJSON, bool, er...
  type SecretInfo (line 380) | type SecretInfo struct
  function AnalyzePermissions (line 385) | func AnalyzePermissions(cfg *config.Config, key string) (*SecretInfo, er...
  function AnalyzeAndPrintPermissions (line 420) | func AnalyzeAndPrintPermissions(cfg *config.Config, key string) {
  function printUserPermissions (line 452) | func printUserPermissions(tokenJSON HFTokenJSON) {
  function printOrgPermissions (line 498) | func printOrgPermissions(tokenJSON HFTokenJSON) {
  function printOrgs (line 542) | func printOrgs(tokenJSON HFTokenJSON) {
  function modelNameLookup (line 572) | func modelNameLookup(models []Model, id string) string {
  function printAccessibleModels (line 584) | func printAccessibleModels(allModels []Model, tokenJSON HFTokenJSON) {
  function printModelsTable (line 641) | func printModelsTable(models []Model) {

FILE: pkg/analyzer/analyzers/huggingface/huggingface_test.go
  function TestAnalyzer_Analyze (line 14) | func TestAnalyzer_Analyze(t *testing.T) {

FILE: pkg/analyzer/analyzers/huggingface/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 37) | func (p Permission) ToString() (string, error) {
    method ToID (line 45) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant Read (line 10) | Read Permission = iota
  constant Write (line 11) | Write Permission = iota
  function PermissionFromString (line 53) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 61) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/jira/jira.go
  type Analyzer (line 20) | type Analyzer struct
    method Type (line 24) | func (a Analyzer) Type() analyzers.AnalyzerType {
    method Analyze (line 28) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  function AnalyzeAndPrintPermissions (line 50) | func AnalyzeAndPrintPermissions(cfg *config.Config, domain, email, token...
  function AnalyzePermissions (line 69) | func AnalyzePermissions(cfg *config.Config, token, domain, email string)...
  function secretInfoToAnalyzerResult (line 109) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  function secretInfoResourceToAnalyzerResource (line 141) | func secretInfoResourceToAnalyzerResource(resource JiraResource) *analyz...
  function printUserInfo (line 158) | func printUserInfo(user JiraUser) {
  function printPermissions (line 172) | func printPermissions(permissions []string) {
  function printResources (line 187) | func printResources(resources []JiraResource) {

FILE: pkg/analyzer/analyzers/jira/jira_test.go
  function TestAnalyzer_Analyze (line 19) | func TestAnalyzer_Analyze(t *testing.T) {
  function sortBindings (line 116) | func sortBindings(bindings []analyzers.Binding) {

FILE: pkg/analyzer/analyzers/jira/models.go
  constant ResourceTypeProject (line 8) | ResourceTypeProject     = "Project"
  constant ResourceTypeBoard (line 9) | ResourceTypeBoard       = "Board"
  constant ResourceTypeGroup (line 10) | ResourceTypeGroup       = "Group"
  constant ResourceTypeIssue (line 11) | ResourceTypeIssue       = "Issue"
  constant ResourceTypeUser (line 12) | ResourceTypeUser        = "User"
  constant ResourceTypeAuditRecord (line 13) | ResourceTypeAuditRecord = "AuditRecord"
  type SecretInfo (line 81) | type SecretInfo struct
    method appendResource (line 110) | func (s *SecretInfo) appendResource(resource JiraResource, resourceTyp...
  type JiraUser (line 90) | type JiraUser struct
  type JiraResource (line 101) | type JiraResource struct
  type JiraPermissionsResponse (line 125) | type JiraPermissionsResponse struct
  type JiraPermission (line 129) | type JiraPermission struct
  type ProjectSearchResponse (line 138) | type ProjectSearchResponse struct
  type JiraProject (line 145) | type JiraProject struct
  type JiraIssue (line 154) | type JiraIssue struct
  type JiraBoard (line 170) | type JiraBoard struct
  type JiraGroup (line 189) | type JiraGroup struct
  type AuditRecord (line 203) | type AuditRecord struct

FILE: pkg/analyzer/analyzers/jira/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 247) | func (p Permission) ToString() (string, error) {
    method ToID (line 255) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant AddComments (line 10) | AddComments Permission = iota
  constant Administer (line 11) | Administer Permission = iota
  constant AdministerProjects (line 12) | AdministerProjects Permission = iota
  constant AssignableUser (line 13) | AssignableUser Permission = iota
  constant AssignIssues (line 14) | AssignIssues Permission = iota
  constant BrowseProjects (line 15) | BrowseProjects Permission = iota
  constant BulkChange (line 16) | BulkChange Permission = iota
  constant CloseIssues (line 17) | CloseIssues Permission = iota
  constant CreateAttachments (line 18) | CreateAttachments Permission = iota
  constant CreateIssues (line 19) | CreateIssues Permission = iota
  constant CreateProject (line 20) | CreateProject Permission = iota
  constant CreateSharedObjects (line 21) | CreateSharedObjects Permission = iota
  constant DeleteAllAttachments (line 22) | DeleteAllAttachments Permission = iota
  constant DeleteAllComments (line 23) | DeleteAllComments Permission = iota
  constant DeleteAllWorklogs (line 24) | DeleteAllWorklogs Permission = iota
  constant DeleteIssues (line 25) | DeleteIssues Permission = iota
  constant DeleteOwnAttachments (line 26) | DeleteOwnAttachments Permission = iota
  constant DeleteOwnComments (line 27) | DeleteOwnComments Permission = iota
  constant DeleteOwnWorklogs (line 28) | DeleteOwnWorklogs Permission = iota
  constant EditAllComments (line 29) | EditAllComments Permission = iota
  constant EditAllWorklogs (line 30) | EditAllWorklogs Permission = iota
  constant EditIssues (line 31) | EditIssues Permission = iota
  constant EditIssueLayout (line 32) | EditIssueLayout Permission = iota
  constant EditOwnComments (line 33) | EditOwnComments Permission = iota
  constant EditOwnWorklogs (line 34) | EditOwnWorklogs Permission = iota
  constant EditWorkflow (line 35) | EditWorkflow Permission = iota
  constant LinkIssues (line 36) | LinkIssues Permission = iota
  constant ManageGroupFilterSubscriptions (line 37) | ManageGroupFilterSubscriptions Permission = iota
  constant ManageSprintsPermission (line 38) | ManageSprintsPermission Permission = iota
  constant ManageWatchers (line 39) | ManageWatchers Permission = iota
  constant ModifyReporter (line 40) | ModifyReporter Permission = iota
  constant MoveIssues (line 41) | MoveIssues Permission = iota
  constant ResolveIssues (line 42) | ResolveIssues Permission = iota
  constant ScheduleIssues (line 43) | ScheduleIssues Permission = iota
  constant SetIssueSecurity (line 44) | SetIssueSecurity Permission = iota
  constant SystemAdmin (line 45) | SystemAdmin Permission = iota
  constant TransitionIssues (line 46) | TransitionIssues Permission = iota
  constant UnarchiveIssues (line 47) | UnarchiveIssues Permission = iota
  constant UserPicker (line 48) | UserPicker Permission = iota
  constant ViewAggregatedData (line 49) | ViewAggregatedData Permission = iota
  constant ViewDevTools (line 50) | ViewDevTools Permission = iota
  constant ViewReadonlyWorkflow (line 51) | ViewReadonlyWorkflow Permission = iota
  constant ViewVotersAndWatchers (line 52) | ViewVotersAndWatchers Permission = iota
  constant WorkOnIssues (line 53) | WorkOnIssues Permission = iota
  function PermissionFromString (line 263) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 271) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/jira/requests.go
  type endpoint (line 16) | type endpoint
  constant mySelf (line 20) | mySelf endpoint = iota
  constant myPermissions (line 21) | myPermissions
  constant getAllProjects (line 22) | getAllProjects
  constant searchIssues (line 23) | searchIssues
  constant getAllBoards (line 24) | getAllBoards
  constant getAllUsers (line 25) | getAllUsers
  constant findGroups (line 26) | findGroups
  constant getAuditRecords (line 27) | getAuditRecords
  function buildBasicAuthHeader (line 49) | func buildBasicAuthHeader(email, token string) string {
  function makeJiraRequest (line 55) | func makeJiraRequest(client *http.Client, endpoint, email, token string)...
  function capturePermissions (line 83) | func capturePermissions(client *http.Client, domain, email, token string...
  function captureResources (line 98) | func captureResources(client *http.Client, domain, email, token string, ...
  function captureUserInfo (line 156) | func captureUserInfo(client *http.Client, token, domain, email string, s...
  function captureProjects (line 182) | func captureProjects(client *http.Client, domain, email, token string, s...
  function captureIssues (line 217) | func captureIssues(client *http.Client, domain, email, token, projectKey...
  function captureBoards (line 254) | func captureBoards(client *http.Client, domain, email, token string, sec...
  function captureUsers (line 294) | func captureUsers(client *http.Client, domain, email, token string, secr...
  function captureGroups (line 332) | func captureGroups(client *http.Client, domain, email, token string, sec...
  function captureAuditLogs (line 374) | func captureAuditLogs(client *http.Client, domain, email, token string, ...
  function handleStatusCode (line 430) | func handleStatusCode(statusCode int, endpoint string) error {

FILE: pkg/analyzer/analyzers/launchdarkly/launchdarkly.go
  type Analyzer (line 20) | type Analyzer struct
    method Type (line 24) | func (a Analyzer) Type() analyzers.AnalyzerType {
    method Analyze (line 28) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  function AnalyzeAndPrintPermissions (line 47) | func AnalyzeAndPrintPermissions(cfg *config.Config, token string) {
  function AnalyzePermissions (line 75) | func AnalyzePermissions(cfg *config.Config, token string) (*SecretInfo, ...
  function secretInfoToAnalyzerResult (line 95) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  function secretInfoResourceToAnalyzerResource (line 127) | func secretInfoResourceToAnalyzerResource(resource Resource) *analyzers....
  function getPermissionType (line 143) | func getPermissionType(token Token) string {
  function printUser (line 157) | func printUser(user User) {
  function printPermissionsType (line 201) | func printPermissionsType(token Token) {
  function printResources (line 206) | func printResources(resources []Resource) {
  function isSDKKey (line 219) | func isSDKKey(key string) bool {

FILE: pkg/analyzer/analyzers/launchdarkly/launchdarkly_test.go
  function TestAnalyzer_Analyze (line 19) | func TestAnalyzer_Analyze(t *testing.T) {
  function sortBindings (line 95) | func sortBindings(bindings []analyzers.Binding) {

FILE: pkg/analyzer/analyzers/launchdarkly/models.go
  type SecretInfo (line 23) | type SecretInfo struct
    method appendResource (line 82) | func (s *SecretInfo) appendResource(resource Resource) {
    method listResourceByType (line 90) | func (s *SecretInfo) listResourceByType(resourceType string) []Resource {
  type User (line 32) | type User struct
  type Token (line 42) | type Token struct
    method hasCustomRoles (line 105) | func (t Token) hasCustomRoles() bool {
    method hasInlineRole (line 110) | func (t Token) hasInlineRole() bool {
  type CustomRole (line 53) | type CustomRole struct
  type Policy (line 64) | type Policy struct
  type Resource (line 72) | type Resource struct

FILE: pkg/analyzer/analyzers/launchdarkly/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 52) | func (p Permission) ToString() (string, error) {
    method ToID (line 60) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant Admin (line 10) | Admin Permission = iota
  constant Writer (line 11) | Writer Permission = iota
  constant Reader (line 12) | Reader Permission = iota
  constant Inlinepolicy (line 13) | Inlinepolicy Permission = iota
  constant Customroles (line 14) | Customroles Permission = iota
  function PermissionFromString (line 68) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 76) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/launchdarkly/requests.go
  constant defaultTimeout (line 16) | defaultTimeout = 5 * time.Second
  type applicationsResponse (line 50) | type applicationsResponse struct
  type repositoriesResponse (line 62) | type repositoriesResponse struct
  type projectsResponse (line 73) | type projectsResponse struct
  type featureFlagsResponse (line 82) | type featureFlagsResponse struct
  type environmentsResponse (line 91) | type environmentsResponse struct
  type experimentResponse (line 100) | type experimentResponse struct
  type membersResponse (line 110) | type membersResponse struct
  type holdoutsResponse (line 121) | type holdoutsResponse struct
  type destinationsResponse (line 131) | type destinationsResponse struct
  type templatesResponse (line 141) | type templatesResponse struct
  type teamsResponse (line 150) | type teamsResponse struct
  type webhooksResponse (line 167) | type webhooksResponse struct
  function makeLaunchDarklyRequest (line 176) | func makeLaunchDarklyRequest(client *http.Client, endpoint, token string...
  function CaptureResources (line 208) | func CaptureResources(client *http.Client, token string, secretInfo *Sec...
  function captureApplications (line 273) | func captureApplications(client *http.Client, token string, secretInfo *...
  function captureRepositories (line 311) | func captureRepositories(client *http.Client, token string, secretInfo *...
  function captureProjects (line 350) | func captureProjects(client *http.Client, token string, secretInfo *Secr...
  function captureProjectFeatureFlags (line 384) | func captureProjectFeatureFlags(client *http.Client, token string, paren...
  function captureProjectEnv (line 426) | func captureProjectEnv(client *http.Client, token string, parent Resourc...
  function captureProjectEnvExperiments (line 477) | func captureProjectEnvExperiments(client *http.Client, token string, pro...
  function captureProjectHoldouts (line 523) | func captureProjectHoldouts(client *http.Client, token string, projectKe...
  function captureMembers (line 566) | func captureMembers(client *http.Client, token string, secretInfo *Secre...
  function captureDestinations (line 603) | func captureDestinations(client *http.Client, token string, secretInfo *...
  function captureTemplates (line 640) | func captureTemplates(client *http.Client, token string, secretInfo *Sec...
  function captureTeams (line 673) | func captureTeams(client *http.Client, token string, secretInfo *SecretI...
  function captureWebhooks (line 711) | func captureWebhooks(client *http.Client, token string, secretInfo *Secr...

FILE: pkg/analyzer/analyzers/launchdarkly/user.go
  type callerIdentityResponse (line 21) | type callerIdentityResponse struct
  type tokenResponse (line 30) | type tokenResponse struct
  type tokenMemberResponse (line 42) | type tokenMemberResponse struct
  type tokenPolicyResponse (line 50) | type tokenPolicyResponse struct
  type customRoleResponse (line 59) | type customRoleResponse struct
  function CaptureUserInformation (line 79) | func CaptureUserInformation(client *http.Client, token string, secretInf...
  function getCallerIdentity (line 101) | func getCallerIdentity(client *http.Client, token string) (*callerIdenti...
  function getToken (line 124) | func getToken(client *http.Client, tokenID, token string) (*tokenRespons...
  function getCustomRole (line 147) | func getCustomRole(client *http.Client, customRoleIDs []string, token st...
  function addUserToSecretInfo (line 176) | func addUserToSecretInfo(caller *callerIdentityResponse, tokenDetails *t...
  function toPolicy (line 198) | func toPolicy(inlinePolices []tokenPolicyResponse) []Policy {
  function toCustomRoles (line 215) | func toCustomRoles(roles []customRoleResponse) []CustomRole {

FILE: pkg/analyzer/analyzers/mailchimp/mailchimp.go
  constant BASE_URL (line 19) | BASE_URL = "https://%s.api.mailchimp.com/3.0"
  type Analyzer (line 23) | type Analyzer struct
    method Type (line 27) | func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.Analy...
    method Analyze (line 29) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  function secretInfoToAnalyzerResult (line 42) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  type MetadataJSON (line 92) | type MetadataJSON struct
  type DomainsJSON (line 115) | type DomainsJSON struct
  type Domain (line 119) | type Domain struct
  function getMetadata (line 125) | func getMetadata(cfg *config.Config, key string) (MetadataJSON, error) {
  function getDomains (line 156) | func getDomains(cfg *config.Config, key string) (DomainsJSON, error) {
  type SecretInfo (line 187) | type SecretInfo struct
  function AnalyzePermissions (line 192) | func AnalyzePermissions(cfg *config.Config, key string) (*SecretInfo, er...
  function AnalyzeAndPrintPermissions (line 214) | func AnalyzeAndPrintPermissions(cfg *config.Config, key string) {
  function printMetadata (line 234) | func printMetadata(metadata MetadataJSON) {
  function printDomains (line 259) | func printDomains(domains DomainsJSON) {

FILE: pkg/analyzer/analyzers/mailchimp/mailchimp_test.go
  function TestAnalyzer_Analyze (line 19) | func TestAnalyzer_Analyze(t *testing.T) {
  function sortBindings (line 94) | func sortBindings(bindings []analyzers.Binding) {

FILE: pkg/analyzer/analyzers/mailchimp/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 362) | func (p Permission) ToString() (string, error) {
    method ToID (line 370) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant InviteUsers (line 10) | InviteUsers Permission = iota
  constant RevokeAccountAccess (line 11) | RevokeAccountAccess Permission = iota
  constant SetUserAccessLevel (line 12) | SetUserAccessLevel Permission = iota
  constant Require2FactorAuthentication (line 13) | Require2FactorAuthentication Permission = iota
  constant ChangeBillingInformation (line 14) | ChangeBillingInformation Permission = iota
  constant ChangeCompanyOrganizationName (line 15) | ChangeCompanyOrganizationName Permission = iota
  constant AddOrAccessApiKeys (line 16) | AddOrAccessApiKeys Permission = iota
  constant CheckReconnectIntegrations (line 17) | CheckReconnectIntegrations Permission = iota
  constant ReferralProgram (line 18) | ReferralProgram Permission = iota
  constant AccountExport (line 19) | AccountExport Permission = iota
  constant CloseAccount (line 20) | CloseAccount Permission = iota
  constant AddFilesToContentStudio (line 21) | AddFilesToContentStudio Permission = iota
  constant OptInToReceiveEmailsFromMailchimp (line 22) | OptInToReceiveEmailsFromMailchimp Permission = iota
  constant CreateAudiences (line 23) | CreateAudiences Permission = iota
  constant ViewAudiences (line 24) | ViewAudiences Permission = iota
  constant AudienceExport (line 25) | AudienceExport Permission = iota
  constant AudienceImport (line 26) | AudienceImport Permission = iota
  constant AddContacts (line 27) | AddContacts Permission = iota
  constant DeleteContacts (line 28) | DeleteContacts Permission = iota
  constant ViewSegments (line 29) | ViewSegments Permission = iota
  constant EditAudienceSettings (line 30) | EditAudienceSettings Permission = iota
  constant ArchiveContacts (line 31) | ArchiveContacts Permission = iota
  constant CreateOrImportTemplates (line 32) | CreateOrImportTemplates Permission = iota
  constant EditTemplates (line 33) | EditTemplates Permission = iota
  constant CreateEmails (line 34) | CreateEmails Permission = iota
  constant EditEmails (line 35) | EditEmails Permission = iota
  constant SendPublishEmails (line 36) | SendPublishEmails Permission = iota
  constant PauseUnpublishEmails (line 37) | PauseUnpublishEmails Permission = iota
  constant DeleteEmails (line 38) | DeleteEmails Permission = iota
  constant SubmitSmsMarketingApplication (line 39) | SubmitSmsMarketingApplication Permission = iota
  constant CreateSendSmsMmsMessages (line 40) | CreateSendSmsMmsMessages Permission = iota
  constant PurchaseSmsCredits (line 41) | PurchaseSmsCredits Permission = iota
  constant ViewEmailReports (line 42) | ViewEmailReports Permission = iota
  constant ViewSmsReports (line 43) | ViewSmsReports Permission = iota
  constant ViewAbuseReports (line 44) | ViewAbuseReports Permission = iota
  constant ViewEmailStatistics (line 45) | ViewEmailStatistics Permission = iota
  constant UseConversations (line 46) | UseConversations Permission = iota
  constant ViewEmailRecipients (line 47) | ViewEmailRecipients Permission = iota
  constant TopLocations (line 48) | TopLocations Permission = iota
  constant EmailContactDetails (line 49) | EmailContactDetails Permission = iota
  constant EmailOpenDetails (line 50) | EmailOpenDetails Permission = iota
  constant ECommerceProductActivity (line 51) | ECommerceProductActivity Permission = iota
  constant DomainPerformance (line 52) | DomainPerformance Permission = iota
  constant CreateYourWebsite (line 53) | CreateYourWebsite Permission = iota
  constant PublishUnpublishYourWebsite (line 54) | PublishUnpublishYourWebsite Permission = iota
  constant ViewReport (line 55) | ViewReport Permission = iota
  constant CreateALandingPage (line 56) | CreateALandingPage Permission = iota
  constant PublishUnpublishALandingPage (line 57) | PublishUnpublishALandingPage Permission = iota
  constant ReplicateALandingPage (line 58) | ReplicateALandingPage Permission = iota
  constant VerifyADomain (line 59) | VerifyADomain Permission = iota
  constant ConnectADomain (line 60) | ConnectADomain Permission = iota
  constant CreateCustomerJourney (line 61) | CreateCustomerJourney Permission = iota
  constant ViewCustomerJourney (line 62) | ViewCustomerJourney Permission = iota
  constant EditCustomerJourney (line 63) | EditCustomerJourney Permission = iota
  constant TurnOnPauseTurnBackOn (line 64) | TurnOnPauseTurnBackOn Permission = iota
  constant ViewMessages (line 65) | ViewMessages Permission = iota
  constant LeaveComments (line 66) | LeaveComments Permission = iota
  constant SendMessages (line 67) | SendMessages Permission = iota
  constant ToggleUserNotifications (line 68) | ToggleUserNotifications Permission = iota
  constant CreateSurvey (line 69) | CreateSurvey Permission = iota
  constant EditSurvey (line 70) | EditSurvey Permission = iota
  constant PublishSurvey (line 71) | PublishSurvey Permission = iota
  constant DeleteSurvey (line 72) | DeleteSurvey Permission = iota
  constant CreateForm (line 73) | CreateForm Permission = iota
  constant EditForm (line 74) | EditForm Permission = iota
  constant PublishForm (line 75) | PublishForm Permission = iota
  constant DeleteForm (line 76) | DeleteForm Permission = iota
  function PermissionFromString (line 378) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 386) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/mailgun/mailgun.go
  type Analyzer (line 18) | type Analyzer struct
    method Type (line 31) | func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.Analy...
    method Analyze (line 33) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  type SecretInfo (line 22) | type SecretInfo struct
  function secretInfoToAnalyzerResult (line 47) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  function AnalyzeAndPrintPermissions (line 78) | func AnalyzeAndPrintPermissions(cfg *config.Config, apiKey string) {
  function AnalyzePermissions (line 91) | func AnalyzePermissions(cfg *config.Config, apiKey string) (*SecretInfo,...
  function printKeyInfo (line 107) | func printKeyInfo(info *SecretInfo) {
  function printDomains (line 119) | func printDomains(domains []Domain) {

FILE: pkg/analyzer/analyzers/mailgun/mailgun_test.go
  function TestAnalyzer_Analyze (line 19) | func TestAnalyzer_Analyze(t *testing.T) {
  function sortBindings (line 93) | func sortBindings(bindings []analyzers.Binding) {

FILE: pkg/analyzer/analyzers/mailgun/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 42) | func (p Permission) ToString() (string, error) {
    method ToID (line 50) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant Read (line 10) | Read Permission = iota
  constant Write (line 11) | Write Permission = iota
  constant FullAccess (line 12) | FullAccess Permission = iota
  function PermissionFromString (line 58) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 66) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/mailgun/requests.go
  type DomainsJSON (line 11) | type DomainsJSON struct
  type Domain (line 17) | type Domain struct
  type KeysJSON (line 27) | type KeysJSON struct
  type Key (line 33) | type Key struct
  function getDomains (line 43) | func getDomains(client *http.Client, apiKey string, secretInfo *SecretIn...
  function getKeys (line 73) | func getKeys(client *http.Client, apiKey string, secretInfo *SecretInfo)...
  function keyToSecretInfo (line 109) | func keyToSecretInfo(key Key, secretInfo *SecretInfo) {

FILE: pkg/analyzer/analyzers/monday/monday.go
  type Analyzer (line 18) | type Analyzer struct
    method Type (line 40) | func (a Analyzer) Type() analyzers.AnalyzerType {
    method Analyze (line 44) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  type SecretInfo (line 22) | type SecretInfo struct
    method appendResource (line 28) | func (s *SecretInfo) appendResource(resource MondayResource) {
  type MondayResource (line 32) | type MondayResource struct
  function AnalyzeAndPrintPermissions (line 58) | func AnalyzeAndPrintPermissions(cfg *config.Config, key string) {
  function AnalyzePermissions (line 78) | func AnalyzePermissions(cfg *config.Config, key string) (*SecretInfo, er...
  function secretInfoToAnalyzerResult (line 93) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  function printUser (line 130) | func printUser(user Me) {
  function printResources (line 140) | func printResources(resources []MondayResource) {

FILE: pkg/analyzer/analyzers/monday/monday_test.go
  function TestAnalyzer_Analyze (line 19) | func TestAnalyzer_Analyze(t *testing.T) {
  function sortBindings (line 95) | func sortBindings(bindings []analyzers.Binding) {

FILE: pkg/analyzer/analyzers/monday/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 32) | func (p Permission) ToString() (string, error) {
    method ToID (line 40) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant FullAccess (line 10) | FullAccess Permission = iota
  function PermissionFromString (line 48) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 56) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/monday/query.go
  constant TypeBoard (line 17) | TypeBoard       = "Board"
  constant TypeBoardGroup (line 18) | TypeBoardGroup  = "Board Group"
  constant TypeBoardColumn (line 19) | TypeBoardColumn = "Board Column"
  constant TypeDoc (line 20) | TypeDoc         = "Document"
  constant TypeFolder (line 21) | TypeFolder      = "Folder"
  constant TypeTag (line 22) | TypeTag         = "Tag"
  constant TypeTeam (line 23) | TypeTeam        = "Team"
  constant TypeWorkspace (line 24) | TypeWorkspace   = "Workspace"
  type Request (line 27) | type Request struct
  type Response (line 32) | type Response struct
  type Data (line 36) | type Data struct
  type EntityRef (line 48) | type EntityRef struct
  type Me (line 53) | type Me struct
  type Account (line 66) | type Account struct
  type User (line 73) | type User struct
  type Board (line 78) | type Board struct
  type Group (line 88) | type Group struct
  type Column (line 93) | type Column struct
  type Doc (line 99) | type Doc struct
  type Workspace (line 106) | type Workspace struct
  function captureMondayData (line 113) | func captureMondayData(client *http.Client, key string, secretInfo *Secr...
  function responseToSecretInfo (line 156) | func responseToSecretInfo(apiResponse Response, secretInfo *SecretInfo) {
  function processBoards (line 168) | func processBoards(boards []Board, secretInfo *SecretInfo) {
  function processDocs (line 206) | func processDocs(docs []Doc, secretInfo *SecretInfo) {
  function processSimpleEntities (line 219) | func processSimpleEntities(entities []EntityRef, entityType string, secr...
  function processWorkspaces (line 229) | func processWorkspaces(workspaces []Workspace, secretInfo *SecretInfo) {

FILE: pkg/analyzer/analyzers/mux/models.go
  type ResourceType (line 8) | type ResourceType
  constant ResourceTypeVideo (line 11) | ResourceTypeVideo  ResourceType = "video"
  constant ResourceTypeData (line 12) | ResourceTypeData   ResourceType = "data"
  constant ResourceTypeSystem (line 13) | ResourceTypeSystem ResourceType = "system"
  type permissionTestConfig (line 16) | type permissionTestConfig struct
  type permissionTest (line 20) | type permissionTest struct
    method testPermission (line 28) | func (test permissionTest) testPermission(client *http.Client, key str...
  type secretInfo (line 44) | type secretInfo struct
    method addPermission (line 51) | func (info *secretInfo) addPermission(resourceType ResourceType, permi...
    method hasPermission (line 66) | func (info *secretInfo) hasPermission(resourceType ResourceType, permi...
  type track (line 76) | type track struct
  type playbackID (line 94) | type playbackID struct
  type meta (line 99) | type meta struct
  type asset (line 105) | type asset struct
  type annotation (line 118) | type annotation struct
  type signingKey (line 125) | type signingKey struct
  type assetListResponse (line 132) | type assetListResponse struct
  type annotationListResponse (line 136) | type annotationListResponse struct
  type signingKeyListResponse (line 140) | type signingKeyListResponse struct

FILE: pkg/analyzer/analyzers/mux/mux.go
  type Analyzer (line 22) | type Analyzer struct
    method Type (line 37) | func (a Analyzer) Type() analyzers.AnalyzerType {
    method Analyze (line 41) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  function readTestsConfig (line 29) | func readTestsConfig() (*permissionTestConfig, error) {
  function AnalyzeAndPrintPermissions (line 59) | func AnalyzeAndPrintPermissions(cfg *config.Config, key string, secret s...
  function AnalyzePermissions (line 76) | func AnalyzePermissions(cfg *config.Config, key string, secret string) (...
  function secretInfoToAnalyzerResult (line 89) | func secretInfoToAnalyzerResult(info *secretInfo) *analyzers.AnalyzerRes...
  function createBinding (line 153) | func createBinding(resource *analyzers.Resource, permission analyzers.Pe...
  function printResourcesAndPermissions (line 160) | func printResourcesAndPermissions(info *secretInfo) {
  function printMuxVideoResources (line 225) | func printMuxVideoResources(info *secretInfo) {
  function printMuxDataResources (line 280) | func printMuxDataResources(info *secretInfo) {
  function printMuxSystemResources (line 296) | func printMuxSystemResources(info *secretInfo) {
  function getAccessLevelStringFromPermission (line 310) | func getAccessLevelStringFromPermission(permission Permission) string {

FILE: pkg/analyzer/analyzers/mux/mux_test.go
  function TestAnalyzer_Analyze (line 17) | func TestAnalyzer_Analyze(t *testing.T) {

FILE: pkg/analyzer/analyzers/mux/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 37) | func (p Permission) ToString() (string, error) {
    method ToID (line 45) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant Read (line 10) | Read Permission = iota
  constant FullAccess (line 11) | FullAccess Permission = iota
  function PermissionFromString (line 53) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 61) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/mux/requests.go
  constant muxAPIBaseURL (line 10) | muxAPIBaseURL = "https://api.mux.com"
  function makeAPIRequest (line 12) | func makeAPIRequest(client *http.Client, key, secret, method, endpoint s...
  function testAllPermissions (line 36) | func testAllPermissions(client *http.Client, info *secretInfo, key strin...
  function populateAllResources (line 56) | func populateAllResources(client *http.Client, info *secretInfo, key str...
  function populateAssets (line 75) | func populateAssets(client *http.Client, info *secretInfo, key string, s...
  function populateAnnotations (line 100) | func populateAnnotations(client *http.Client, info *secretInfo, key stri...
  function populateSigningKeys (line 125) | func populateSigningKeys(client *http.Client, info *secretInfo, key stri...

FILE: pkg/analyzer/analyzers/mux/resources.go
  function init (line 7) | func init() {
  function createAssetResource (line 35) | func createAssetResource(asset asset) analyzers.Resource {
  function createAssetTrackResources (line 51) | func createAssetTrackResources(asset asset, parent *analyzers.Resource) ...
  function createAssetPlaybackIDResources (line 78) | func createAssetPlaybackIDResources(asset asset, parent *analyzers.Resou...
  function createAnnotationResource (line 94) | func createAnnotationResource(annotation annotation) analyzers.Resource {
  function createSigningKeyResource (line 106) | func createSigningKeyResource(signingKey signingKey) analyzers.Resource {

FILE: pkg/analyzer/analyzers/mysql/mysql.go
  type Analyzer (line 27) | type Analyzer struct
    method Type (line 31) | func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.Analy...
    method Analyze (line 33) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  function secretInfoToAnalyzerResult (line 45) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  function bakeUserBindings (line 66) | func bakeUserBindings(info *SecretInfo) ([]analyzers.Binding, *analyzers...
  function bakeDatabaseBindings (line 89) | func bakeDatabaseBindings(userResource *analyzers.Resource, info *Secret...
  function bakeTableBindings (line 125) | func bakeTableBindings(dbResource *analyzers.Resource, database *Databas...
  function bakeRoutineBindings (line 174) | func bakeRoutineBindings(dbResource *analyzers.Resource, database *Datab...
  constant mysql_sslmode (line 206) | mysql_sslmode                 = "ssl-mode"
  constant mysql_sslmode_disabled (line 207) | mysql_sslmode_disabled        = "DISABLED"
  constant mysql_sslmode_preferred (line 208) | mysql_sslmode_preferred       = "PREFERRED"
  constant mysql_sslmode_required (line 209) | mysql_sslmode_required        = "REQUIRED"
  constant mysql_sslmode_verify_ca (line 210) | mysql_sslmode_verify_ca       = "VERIFY_CA"
  constant mysql_sslmode_verify_identity (line 211) | mysql_sslmode_verify_identity = "VERIFY_IDENTITY"
  constant mysql_db_sys (line 215) | mysql_db_sys      = "sys"
  constant mysql_db_perf_sch (line 216) | mysql_db_perf_sch = "performance_schema"
  constant mysql_db_info_sch (line 217) | mysql_db_info_sch = "information_schema"
  constant mysql_db_mysql (line 218) | mysql_db_mysql    = "mysql"
  constant mysql_all (line 220) | mysql_all = "*"
  type GlobalPrivs (line 223) | type GlobalPrivs struct
  type Database (line 227) | type Database struct
  type Table (line 236) | type Table struct
  type Column (line 244) | type Column struct
  type Routine (line 249) | type Routine struct
  type SecretInfo (line 258) | type SecretInfo struct
  function AnalyzeAndPrintPermissions (line 265) | func AnalyzeAndPrintPermissions(cfg *config.Config, key string) {
  function AnalyzePermissions (line 284) | func AnalyzePermissions(cfg *config.Config, connectionStr string) (*Secr...
  function parseConnectionStr (line 337) | func parseConnectionStr(connection string) (*dburl.URL, error) {
  function createConnection (line 358) | func createConnection(u *dburl.URL) (*sql.DB, error) {
  function fixTLSQueryParam (line 381) | func fixTLSQueryParam(connection string) (string, error) {
  function getUser (line 423) | func getUser(db *sql.DB) (string, error) {
  function getDatabases (line 432) | func getDatabases(db *sql.DB, databases map[string]*Database) error {
  function getTables (line 460) | func getTables(db *sql.DB, databases map[string]*Database) error {
  function getRoutines (line 484) | func getRoutines(db *sql.DB, databases map[string]*Database) error {
  function getGrants (line 511) | func getGrants(db *sql.DB) ([]string, error) {
  function processGrants (line 542) | func processGrants(grants []string, databases map[string]*Database, glob...
  function processGrant (line 560) | func processGrant(grant string, databases map[string]*Database, globalPr...
  function parseDBFromGrant (line 641) | func parseDBFromGrant(grant string) string {
  function filterDBPrivs (line 661) | func filterDBPrivs(privs []string) []string {
  function filterTablePrivs (line 671) | func filterTablePrivs(privs []string) []string {
  function addRemoveOnePrivOnAll (line 681) | func addRemoveOnePrivOnAll(databases map[string]*Database, globalPrivs *...
  function addRemoveAllPrivs (line 724) | func addRemoveAllPrivs(databases map[string]*Database, globalPrivs *Glob...
  function getGlobalAllPrivileges (line 754) | func getGlobalAllPrivileges() []string {
  function getDBAllPrivs (line 764) | func getDBAllPrivs() []string {
  function getTableAllPrivs (line 774) | func getTableAllPrivs() []string {
  function getRoutineAllPrivs (line 784) | func getRoutineAllPrivs() []string {
  function checkIsRoutine (line 794) | func checkIsRoutine(privs []string) bool {
  function getTableIndex (line 801) | func getTableIndex(d *Database, tableName string) int {
  function getRoutineIndex (line 810) | func getRoutineIndex(d *Database, routineName string) int {
  function addRemovePrivs (line 819) | func addRemovePrivs(currentPrivs []string, privsToAddRemove []string, ad...
  function printResults (line 840) | func printResults(databases map[string]*Database, globalPrivs GlobalPriv...
  function printGlobalPrivs (line 849) | func printGlobalPrivs(globalPrivs GlobalPrivs) {
  function printDBTablePrivs (line 868) | func printDBTablePrivs(databases map[string]*Database, showAll bool) {
  function printRoutinePrivs (line 931) | func printRoutinePrivs(databases map[string]*Database, showAll bool) {
  function cleanPrivStr (line 961) | func cleanPrivStr(priv string) string {
  function isBuiltIn (line 969) | func isBuiltIn(dbName string) bool {

FILE: pkg/analyzer/analyzers/mysql/mysql_test.go
  function TestAnalyzer_Analyze (line 20) | func TestAnalyzer_Analyze(t *testing.T) {

FILE: pkg/analyzer/analyzers/mysql/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 422) | func (p Permission) ToString() (string, error) {
    method ToID (line 430) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant Alter (line 10) | Alter Permission = iota
  constant AlterRoutine (line 11) | AlterRoutine Permission = iota
  constant AllowNonexistentDefiner (line 12) | AllowNonexistentDefiner Permission = iota
  constant ApplicationPasswordAdmin (line 13) | ApplicationPasswordAdmin Permission = iota
  constant AuditAbortExempt (line 14) | AuditAbortExempt Permission = iota
  constant AuditAdmin (line 15) | AuditAdmin Permission = iota
  constant AuthenticationPolicyAdmin (line 16) | AuthenticationPolicyAdmin Permission = iota
  constant BackupAdmin (line 17) | BackupAdmin Permission = iota
  constant BinlogAdmin (line 18) | BinlogAdmin Permission = iota
  constant BinlogEncryptionAdmin (line 19) | BinlogEncryptionAdmin Permission = iota
  constant CloneAdmin (line 20) | CloneAdmin Permission = iota
  constant ConnectionAdmin (line 21) | ConnectionAdmin Permission = iota
  constant Create (line 22) | Create Permission = iota
  constant CreateRole (line 23) | CreateRole Permission = iota
  constant CreateRoutine (line 24) | CreateRoutine Permission = iota
  constant CreateTablespace (line 25) | CreateTablespace Permission = iota
  constant CreateTemporaryTables (line 26) | CreateTemporaryTables Permission = iota
  constant CreateUser (line 27) | CreateUser Permission = iota
  constant CreateView (line 28) | CreateView Permission = iota
  constant Delete (line 29) | Delete Permission = iota
  constant Drop (line 30) | Drop Permission = iota
  constant DropRole (line 31) | DropRole Permission = iota
  constant EncryptionKeyAdmin (line 32) | EncryptionKeyAdmin Permission = iota
  constant Event (line 33) | Event Permission = iota
  constant Execute (line 34) | Execute Permission = iota
  constant File (line 35) | File Permission = iota
  constant FirewallAdmin (line 36) | FirewallAdmin Permission = iota
  constant FirewallExempt (line 37) | FirewallExempt Permission = iota
  constant FirewallUser (line 38) | FirewallUser Permission = iota
  constant FlushOptimizerCosts (line 39) | FlushOptimizerCosts Permission = iota
  constant FlushStatus (line 40) | FlushStatus Permission = iota
  constant FlushTables (line 41) | FlushTables Permission = iota
  constant FlushUserResources (line 42) | FlushUserResources Permission = iota
  constant GrantOption (line 43) | GrantOption Permission = iota
  constant GroupReplicationAdmin (line 44) | GroupReplicationAdmin Permission = iota
  constant GroupReplicationStream (line 45) | GroupReplicationStream Permission = iota
  constant Index (line 46) | Index Permission = iota
  constant InnodbRedoLogArchive (line 47) | InnodbRedoLogArchive Permission = iota
  constant InnodbRedoLogEnable (line 48) | InnodbRedoLogEnable Permission = iota
  constant Insert (line 49) | Insert Permission = iota
  constant LockingTables (line 50) | LockingTables Permission = iota
  constant MaskingDictionariesAdmin (line 51) | MaskingDictionariesAdmin Permission = iota
  constant NdbStoredUser (line 52) | NdbStoredUser Permission = iota
  constant PasswordlessUserAdmin (line 53) | PasswordlessUserAdmin Permission = iota
  constant PersistRoVariablesAdmin (line 54) | PersistRoVariablesAdmin Permission = iota
  constant Process (line 55) | Process Permission = iota
  constant Proxy (line 56) | Proxy Permission = iota
  constant References (line 57) | References Permission = iota
  constant Reload (line 58) | Reload Permission = iota
  constant ReplicationApplier (line 59) | ReplicationApplier Permission = iota
  constant ReplicationClient (line 60) | ReplicationClient Permission = iota
  constant ReplicationSlave (line 61) | ReplicationSlave Permission = iota
  constant ReplicationSlaveAdmin (line 62) | ReplicationSlaveAdmin Permission = iota
  constant ResourceGroupAdmin (line 63) | ResourceGroupAdmin Permission = iota
  constant ResourceGroupUser (line 64) | ResourceGroupUser Permission = iota
  constant RoleAdmin (line 65) | RoleAdmin Permission = iota
  constant Select (line 66) | Select Permission = iota
  constant SensitiveVariablesObserver (line 67) | SensitiveVariablesObserver Permission = iota
  constant ServiceConnectionAdmin (line 68) | ServiceConnectionAdmin Permission = iota
  constant SessionVariablesAdmin (line 69) | SessionVariablesAdmin Permission = iota
  constant SetAnyDefiner (line 70) | SetAnyDefiner Permission = iota
  constant SetUserId (line 71) | SetUserId Permission = iota
  constant ShowDatabases (line 72) | ShowDatabases Permission = iota
  constant ShowRoutine (line 73) | ShowRoutine Permission = iota
  constant ShowView (line 74) | ShowView Permission = iota
  constant Shutdown (line 75) | Shutdown Permission = iota
  constant SkipQueryRewrite (line 76) | SkipQueryRewrite Permission = iota
  constant Super (line 77) | Super Permission = iota
  constant SystemUser (line 78) | SystemUser Permission = iota
  constant SystemVariablesAdmin (line 79) | SystemVariablesAdmin Permission = iota
  constant TableEncryptionAdmin (line 80) | TableEncryptionAdmin Permission = iota
  constant TelemetryLogAdmin (line 81) | TelemetryLogAdmin Permission = iota
  constant TpConnectionAdmin (line 82) | TpConnectionAdmin Permission = iota
  constant TransactionGtidTag (line 83) | TransactionGtidTag Permission = iota
  constant Trigger (line 84) | Trigger Permission = iota
  constant Update (line 85) | Update Permission = iota
  constant Usage (line 86) | Usage Permission = iota
  constant VersionTokenAdmin (line 87) | VersionTokenAdmin Permission = iota
  constant XaRecoverAdmin (line 88) | XaRecoverAdmin Permission = iota
  function PermissionFromString (line 438) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 446) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/mysql/scopes.go
  type PrivTypes (line 3) | type PrivTypes struct

FILE: pkg/analyzer/analyzers/netlify/models.go
  type ResourceType (line 5) | type ResourceType
    method String (line 7) | func (r ResourceType) String() string {
  constant CurrentUser (line 12) | CurrentUser         ResourceType = "User"
  constant Token (line 13) | Token               ResourceType = "Token"
  constant Site (line 14) | Site                ResourceType = "Site"
  constant SiteFile (line 15) | SiteFile            ResourceType = "Site File"
  constant SiteEnvVar (line 16) | SiteEnvVar          ResourceType = "Site Env Variable"
  constant SiteSnippet (line 17) | SiteSnippet         ResourceType = "Site Snippet"
  constant SiteDeploy (line 18) | SiteDeploy          ResourceType = "Site Deploy"
  constant SiteDeployedBranch (line 19) | SiteDeployedBranch  ResourceType = "Site Deployed Branch"
  constant SiteBuild (line 20) | SiteBuild           ResourceType = "Site Build"
  constant SiteDevServer (line 21) | SiteDevServer       ResourceType = "Site Dev Server"
  constant SiteBuildHook (line 22) | SiteBuildHook       ResourceType = "Site Build Hook"
  constant SiteDevServerHook (line 23) | SiteDevServerHook   ResourceType = "Site Dev Server Hook"
  constant SiteServiceInstance (line 24) | SiteServiceInstance ResourceType = "Site Service Instance"
  constant SiteFunction (line 25) | SiteFunction        ResourceType = "Site Function"
  constant SiteForm (line 26) | SiteForm            ResourceType = "Site Form"
  constant SiteSubmission (line 27) | SiteSubmission      ResourceType = "Site Submission"
  constant SiteTrafficSplit (line 28) | SiteTrafficSplit    ResourceType = "Site Traffic Split"
  constant DNSZone (line 29) | DNSZone             ResourceType = "DNS Zone"
  constant Service (line 30) | Service             ResourceType = "Service"
  type SecretInfo (line 33) | type SecretInfo struct
    method appendResource (line 40) | func (s *SecretInfo) appendResource(resource NetlifyResource) {
    method listResourceByType (line 48) | func (s *SecretInfo) listResourceByType(resourceType ResourceType) []N...
  type User (line 62) | type User struct
  type NetlifyResource (line 70) | type NetlifyResource struct
  type token (line 78) | type token struct
  type site (line 85) | type site struct
  type file (line 93) | type file struct
  type envVariable (line 99) | type envVariable struct
  type snippet (line 108) | type snippet struct
  type deploy (line 113) | type deploy struct
  type deployedBranch (line 121) | type deployedBranch struct
  type build (line 127) | type build struct
  type devServer (line 132) | type devServer struct
  type buildHook (line 137) | type buildHook struct
  type serviceInstance (line 143) | type serviceInstance struct
  type function (line 149) | type function struct
  type formSubmissionSplitInfo (line 155) | type formSubmissionSplitInfo struct
  type dnsZone (line 160) | type dnsZone struct
  type service (line 165) | type service struct

FILE: pkg/analyzer/analyzers/netlify/netlify.go
  type Analyzer (line 17) | type Analyzer struct
    method Type (line 21) | func (a Analyzer) Type() analyzers.AnalyzerType {
    method Analyze (line 25) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  function AnalyzeAndPrintPermissions (line 39) | func AnalyzeAndPrintPermissions(cfg *config.Config, key string) {
  function AnalyzePermissions (line 60) | func AnalyzePermissions(cfg *config.Config, key string) (*SecretInfo, er...
  function secretInfoToAnalyzerResult (line 81) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  function printUserInfo (line 126) | func printUserInfo(user User) {
  function printTokenInfo (line 136) | func printTokenInfo(tokens []NetlifyResource) {
  function printResources (line 147) | func printResources(resources []NetlifyResource) {

FILE: pkg/analyzer/analyzers/netlify/netlify_test.go
  function TestAnalyzer_Analyze (line 20) | func TestAnalyzer_Analyze(t *testing.T) {
  function sortBindings (line 98) | func sortBindings(bindings []analyzers.Binding) {

FILE: pkg/analyzer/analyzers/netlify/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 32) | func (p Permission) ToString() (string, error) {
    method ToID (line 40) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant FullAccess (line 10) | FullAccess Permission = iota
  function PermissionFromString (line 48) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 56) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/netlify/requests.go
  function makeNetlifyRequest (line 60) | func makeNetlifyRequest(client *http.Client, endpoint, key string) ([]by...
  function captureResources (line 89) | func captureResources(client *http.Client, key string, secretInfo *Secre...
  function captureUserInfo (line 156) | func captureUserInfo(client *http.Client, key string, secretInfo *Secret...
  function captureTokens (line 180) | func captureTokens(client *http.Client, key string, secretInfo *SecretIn...
  function captureSites (line 220) | func captureSites(client *http.Client, key string, secretInfo *SecretInf...
  function captureSiteFiles (line 255) | func captureSiteFiles(client *http.Client, key string, site NetlifyResou...
  function captureSiteEnvVar (line 289) | func captureSiteEnvVar(client *http.Client, key string, site NetlifyReso...
  function captureSiteSnippets (line 327) | func captureSiteSnippets(client *http.Client, key string, site NetlifyRe...
  function captureSiteDeploys (line 358) | func captureSiteDeploys(client *http.Client, key string, site NetlifyRes...
  function captureSiteDeployedBranches (line 394) | func captureSiteDeployedBranches(client *http.Client, key string, site N...
  function captureSiteBuilds (line 428) | func captureSiteBuilds(client *http.Client, key string, site NetlifyReso...
  function captureSiteDevServers (line 459) | func captureSiteDevServers(client *http.Client, key string, site Netlify...
  function captureSiteBuildHooks (line 490) | func captureSiteBuildHooks(client *http.Client, key string, site Netlify...
  function captureSiteDevServerHooks (line 524) | func captureSiteDevServerHooks(client *http.Client, key string, site Net...
  function captureSiteServiceInstances (line 558) | func captureSiteServiceInstances(client *http.Client, key string, site N...
  function captureSiteFunctions (line 592) | func captureSiteFunctions(client *http.Client, key string, site NetlifyR...
  function captureSiteFormSubmissionSplitInfo (line 621) | func captureSiteFormSubmissionSplitInfo(client *http.Client, key string,...
  function captureDNSZones (line 652) | func captureDNSZones(client *http.Client, key string, secretInfo *Secret...
  function captureServices (line 682) | func captureServices(client *http.Client, key string, secretInfo *Secret...

FILE: pkg/analyzer/analyzers/ngrok/models.go
  type apiKey (line 3) | type apiKey struct
  type authtoken (line 12) | type authtoken struct
  type sshCredential (line 22) | type sshCredential struct
  type domain (line 33) | type domain struct
  type endpoint (line 41) | type endpoint struct
  type botUser (line 57) | type botUser struct
  type user (line 65) | type user struct
  type paginatedResponse (line 69) | type paginatedResponse struct
  type secretInfo (line 79) | type secretInfo struct

FILE: pkg/analyzer/analyzers/ngrok/ngrok.go
  type Analyzer (line 21) | type Analyzer struct
    method Type (line 32) | func (a Analyzer) Type() analyzers.AnalyzerType {
    method Analyze (line 36) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  type AccountType (line 25) | type AccountType
  constant AccountFree (line 28) | AccountFree AccountType = "Free"
  constant AccountPaid (line 29) | AccountPaid AccountType = "Paid"
  function AnalyzeAndPrintPermissions (line 50) | func AnalyzeAndPrintPermissions(cfg *config.Config, key string) {
  function AnalyzePermissions (line 67) | func AnalyzePermissions(cfg *config.Config, key string) (*secretInfo, er...
  function secretInfoToAnalyzerResult (line 84) | func secretInfoToAnalyzerResult(info *secretInfo) *analyzers.AnalyzerRes...
  function printAccountAndPermissions (line 156) | func printAccountAndPermissions(info *secretInfo) {

FILE: pkg/analyzer/analyzers/ngrok/ngrok_test.go
  function TestAnalyzer_Analyze (line 19) | func TestAnalyzer_Analyze(t *testing.T) {
  function sortBindings (line 96) | func sortBindings(bindings []analyzers.Binding) {

FILE: pkg/analyzer/analyzers/ngrok/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 32) | func (p Permission) ToString() (string, error) {
    method ToID (line 40) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant FullAccess (line 10) | FullAccess Permission = iota
  function PermissionFromString (line 48) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 56) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/ngrok/requests.go
  constant ngrokAPIBaseURL (line 14) | ngrokAPIBaseURL           = "https://api.ngrok.com"
  constant reservedAddressesEndpoint (line 15) | reservedAddressesEndpoint = "/reserved_addrs"
  constant domainsEndpoint (line 16) | domainsEndpoint           = "/reserved_domains"
  constant endpointsEndpoint (line 17) | endpointsEndpoint         = "/endpoints"
  constant apiKeysEndpoint (line 18) | apiKeysEndpoint           = "/api_keys"
  constant sshCredentialsEndpoint (line 19) | sshCredentialsEndpoint    = "/ssh_credentials"
  constant authtokensEndpoint (line 20) | authtokensEndpoint        = "/credentials"
  constant botUsersEndpoint (line 21) | botUsersEndpoint          = "/bot_users"
  function determineAccountType (line 24) | func determineAccountType(client *http.Client, info *secretInfo, key str...
  function populateAllResources (line 59) | func populateAllResources(client *http.Client, info *secretInfo, key str...
  function populateEndpoints (line 88) | func populateEndpoints(client *http.Client, info *secretInfo, key string...
  function populateAPIKeys (line 105) | func populateAPIKeys(client *http.Client, info *secretInfo, key string) ...
  function populateSSHCredentials (line 122) | func populateSSHCredentials(client *http.Client, info *secretInfo, key s...
  function populateAuthtokens (line 139) | func populateAuthtokens(client *http.Client, info *secretInfo, key strin...
  function populateDomains (line 156) | func populateDomains(client *http.Client, info *secretInfo, key string) ...
  function populateBotUsers (line 173) | func populateBotUsers(client *http.Client, info *secretInfo, key string)...
  function fetchResources (line 190) | func fetchResources(client *http.Client, url string, key string) (*pagin...
  function populateUsers (line 211) | func populateUsers(info *secretInfo) {
  function makeAPIRequest (line 239) | func makeAPIRequest(client *http.Client, method string, url string, key ...
  function createEndpointResource (line 271) | func createEndpointResource(endpoint endpoint) analyzers.Resource {
  function createDomainResource (line 293) | func createDomainResource(domain domain) analyzers.Resource {
  function createAPIKeyResource (line 307) | func createAPIKeyResource(apiKey apiKey) analyzers.Resource {
  function createSSHKeyResource (line 321) | func createSSHKeyResource(sshCredential sshCredential) analyzers.Resource {
  function createAuthtokenResource (line 338) | func createAuthtokenResource(authtoken authtoken) analyzers.Resource {
  function createBotUserResource (line 354) | func createBotUserResource(botUser botUser) analyzers.Resource {
  function createUserResource (line 368) | func createUserResource(user user) analyzers.Resource {

FILE: pkg/analyzer/analyzers/ngrok/resources.go
  type ngrokResource (line 3) | type ngrokResource struct

FILE: pkg/analyzer/analyzers/notion/notion.go
  type Analyzer (line 24) | type Analyzer struct
    method Type (line 28) | func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.Analy...
    method Analyze (line 30) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  function secretInfoToAnalyzerResult (line 42) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  type HttpStatusTest (line 99) | type HttpStatusTest struct
    method RunTest (line 116) | func (h *HttpStatusTest) RunTest(cfg *config.Config, headers map[strin...
  function StatusContains (line 107) | func StatusContains(status int, vals []int) bool {
  type Scope (line 157) | type Scope struct
  function readInScopes (line 162) | func readInScopes() ([]Scope, error) {
  function getPermissions (line 171) | func getPermissions(cfg *config.Config, key string) ([]string, error) {
  type SecretInfo (line 191) | type SecretInfo struct
  type user (line 197) | type user struct
  type bot (line 206) | type bot struct
    method GetWorkspaceName (line 218) | func (b *bot) GetWorkspaceName() string {
    method OwnedBy (line 222) | func (b *bot) OwnedBy() string {
  function AnalyzeAndPrintPermissions (line 229) | func AnalyzeAndPrintPermissions(cfg *config.Config, key string) {
  function AnalyzePermissions (line 253) | func AnalyzePermissions(cfg *config.Config, key string) (*SecretInfo, er...
  function printPermissions (line 293) | func printPermissions(permissions []string) {
  function printUsers (line 304) | func printUsers(users []user) {
  function getBotInfo (line 315) | func getBotInfo(client *http.Client, key string) (*bot, error) {
  type usersResponse (line 349) | type usersResponse struct
  function getWorkspaceUsers (line 353) | func getWorkspaceUsers(client *http.Client, key string) ([]user, error) {

FILE: pkg/analyzer/analyzers/notion/notion_test.go
  function TestAnalyzer_Analyze (line 19) | func TestAnalyzer_Analyze(t *testing.T) {
  function sortBindings (line 93) | func sortBindings(bindings []analyzers.Binding) {

FILE: pkg/analyzer/analyzers/notion/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 62) | func (p Permission) ToString() (string, error) {
    method ToID (line 70) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant ReadContent (line 10) | ReadContent Permission = iota
  constant UpdateContent (line 11) | UpdateContent Permission = iota
  constant InsertContent (line 12) | InsertContent Permission = iota
  constant ReadComments (line 13) | ReadComments Permission = iota
  constant InsertComments (line 14) | InsertComments Permission = iota
  constant ReadUsersWithEmail (line 15) | ReadUsersWithEmail Permission = iota
  constant ReadUsersWithoutEmail (line 16) | ReadUsersWithoutEmail Permission = iota
  function PermissionFromString (line 78) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 86) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/openai/openai.go
  type Analyzer (line 25) | type Analyzer struct
    method Type (line 29) | func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.Analy...
    method Analyze (line 31) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  function secretInfoToAnalyzerResult (line 39) | func secretInfoToAnalyzerResult(info *AnalyzerJSON) *analyzers.AnalyzerR...
  function convertPermissions (line 69) | func convertPermissions(isAdmin bool, perms []permissionData) []analyzer...
  function flattenPerms (line 86) | func flattenPerms(perms ...permissionData) []Permission {
  constant BASE_URL (line 95) | BASE_URL      = "https://api.openai.com"
  constant ORGS_ENDPOINT (line 96) | ORGS_ENDPOINT = "/v1/organizations"
  constant ME_ENDPOINT (line 97) | ME_ENDPOINT   = "/v1/me"
  type MeJSON (line 100) | type MeJSON struct
  type permissionData (line 119) | type permissionData struct
  type AnalyzerJSON (line 126) | type AnalyzerJSON struct
  function AnalyzeAndPrintPermissions (line 135) | func AnalyzeAndPrintPermissions(cfg *config.Config, apiKey string) {
  function AnalyzePermissions (line 155) | func AnalyzePermissions(cfg *config.Config, key string) (*AnalyzerJSON, ...
  function analyzeScopes (line 185) | func analyzeScopes(key string) error {
  function openAIRequest (line 194) | func openAIRequest(cfg *config.Config, method string, url string, key st...
  function checkAdminKey (line 226) | func checkAdminKey(cfg *config.Config, key string) (bool, error) {
  function getUserData (line 243) | func getUserData(cfg *config.Config, key string) (MeJSON, error) {
  function printAPIKeyType (line 262) | func printAPIKeyType(apiKey string) {
  function printData (line 271) | func printData(meJSON MeJSON) {
  function stringifyPermissionStatus (line 297) | func stringifyPermissionStatus(scope OpenAIScope) ([]Permission, analyze...
  function getPermissions (line 331) | func getPermissions() []permissionData {
  function printPermissions (line 347) | func printPermissions(perms []permissionData, showAll bool) {

FILE: pkg/analyzer/analyzers/openai/openai_test.go
  function TestAnalyzer_Analyze (line 18) | func TestAnalyzer_Analyze(t *testing.T) {

FILE: pkg/analyzer/analyzers/openai/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 97) | func (p Permission) ToString() (string, error) {
    method ToID (line 105) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant ModelsRead (line 10) | ModelsRead Permission = iota
  constant ModelCapabilitiesWrite (line 11) | ModelCapabilitiesWrite Permission = iota
  constant AssistantsRead (line 12) | AssistantsRead Permission = iota
  constant AssistantsWrite (line 13) | AssistantsWrite Permission = iota
  constant ThreadsRead (line 14) | ThreadsRead Permission = iota
  constant ThreadsWrite (line 15) | ThreadsWrite Permission = iota
  constant FineTuningRead (line 16) | FineTuningRead Permission = iota
  constant FineTuningWrite (line 17) | FineTuningWrite Permission = iota
  constant FilesRead (line 18) | FilesRead Permission = iota
  constant FilesWrite (line 19) | FilesWrite Permission = iota
  constant EvalsRead (line 20) | EvalsRead Permission = iota
  constant EvalsWrite (line 21) | EvalsWrite Permission = iota
  constant ResponsesRead (line 22) | ResponsesRead Permission = iota
  constant ResponsesWrite (line 23) | ResponsesWrite Permission = iota
  function PermissionFromString (line 113) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 121) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/openai/scopes.go
  type OpenAIScope (line 7) | type OpenAIScope struct
    method RunTests (line 15) | func (s *OpenAIScope) RunTests(key string) error {

FILE: pkg/analyzer/analyzers/opsgenie/opsgenie.go
  type Analyzer (line 24) | type Analyzer struct
    method Type (line 28) | func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.Analy...
    method Analyze (line 30) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  function secretInfoToAnalyzerResult (line 42) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  type User (line 94) | type User struct
  type UsersJSON (line 102) | type UsersJSON struct
  type HttpStatusTest (line 106) | type HttpStatusTest struct
    method RunTest (line 123) | func (h *HttpStatusTest) RunTest(cfg *config.Config, headers map[strin...
  function StatusContains (line 114) | func StatusContains(status int, vals []int) bool {
  type Scope (line 173) | type Scope struct
  function readInScopes (line 178) | func readInScopes() ([]Scope, error) {
  function checkPermissions (line 187) | func checkPermissions(cfg *config.Config, key string) ([]string, error) {
  function contains (line 207) | func contains(s []string, e string) bool {
  function getUserList (line 216) | func getUserList(cfg *config.Config, key string) ([]User, error) {
  type SecretInfo (line 244) | type SecretInfo struct
  function AnalyzeAndPrintPermissions (line 249) | func AnalyzeAndPrintPermissions(cfg *config.Config, key string) {
  function AnalyzePermissions (line 265) | func AnalyzePermissions(cfg *config.Config, key string) (*SecretInfo, er...
  function printPermissions (line 290) | func printPermissions(permissions []string) {
  function printUsers (line 301) | func printUsers(users []User) {

FILE: pkg/analyzer/analyzers/opsgenie/opsgenie_test.go
  function TestAnalyzer_Analyze (line 14) | func TestAnalyzer_Analyze(t *testing.T) {

FILE: pkg/analyzer/analyzers/opsgenie/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 47) | func (p Permission) ToString() (string, error) {
    method ToID (line 55) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant ConfigurationAccess (line 10) | ConfigurationAccess Permission = iota
  constant Read (line 11) | Read Permission = iota
  constant Delete (line 12) | Delete Permission = iota
  constant CreateAndUpdate (line 13) | CreateAndUpdate Permission = iota
  function PermissionFromString (line 63) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 71) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/plaid/models.go
  type account (line 3) | type account struct
  type item (line 11) | type item struct
  type accountsResponse (line 16) | type accountsResponse struct
  type secretInfo (line 21) | type secretInfo struct

FILE: pkg/analyzer/analyzers/plaid/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 37) | func (p Permission) ToString() (string, error) {
    method ToID (line 45) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant Read (line 10) | Read Permission = iota
  constant Write (line 11) | Write Permission = iota
  function PermissionFromString (line 53) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 61) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/plaid/plaid.go
  type Analyzer (line 23) | type Analyzer struct
    method Type (line 27) | func (a Analyzer) Type() analyzers.AnalyzerType {
    method Analyze (line 31) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  function AnalyzeAndPrintPermissions (line 53) | func AnalyzeAndPrintPermissions(cfg *config.Config, secret string, clien...
  function AnalyzePermissions (line 74) | func AnalyzePermissions(cfg *config.Config, secret string, clientId stri...
  function getPlaidAccounts (line 93) | func getPlaidAccounts(client *http.Client, clientID string, secret strin...
  function secretInfoToAnalyzerResult (line 125) | func secretInfoToAnalyzerResult(info *secretInfo) *analyzers.AnalyzerRes...
  function printAccountsAndProducts (line 175) | func printAccountsAndProducts(info *secretInfo) {

FILE: pkg/analyzer/analyzers/plaid/plaid_test.go
  function TestAnalyzer_Analyze (line 18) | func TestAnalyzer_Analyze(t *testing.T) {

FILE: pkg/analyzer/analyzers/plaid/products.go
  type plaidProduct (line 3) | type plaidProduct struct
  type Product (line 10) | type Product
  constant Assets (line 13) | Assets Product = iota
  constant Auth (line 14) | Auth
  constant Balance (line 15) | Balance
  constant BalancePlus (line 16) | BalancePlus
  constant Beacon (line 17) | Beacon
  constant CraBaseReport (line 18) | CraBaseReport
  constant CraIncomeInsights (line 19) | CraIncomeInsights
  constant CraPartnerInsights (line 20) | CraPartnerInsights
  constant CraNetworkInsights (line 21) | CraNetworkInsights
  constant CraCashflowInsights (line 22) | CraCashflowInsights
  constant CreditDetails (line 23) | CreditDetails
  constant Employment (line 24) | Employment
  constant Identity (line 25) | Identity
  constant IdentityMatch (line 26) | IdentityMatch
  constant IdentityVerification (line 27) | IdentityVerification
  constant Income (line 28) | Income
  constant IncomeVerification (line 29) | IncomeVerification
  constant Investments (line 30) | Investments
  constant InvestmentsAuth (line 31) | InvestmentsAuth
  constant Layer (line 32) | Layer
  constant Liabilities (line 33) | Liabilities
  constant PayByBank (line 34) | PayByBank
  constant PaymentInitiation (line 35) | PaymentInitiation
  constant ProcessorPayments (line 36) | ProcessorPayments
  constant ProcessorIdentity (line 37) | ProcessorIdentity
  constant Profile (line 38) | Profile
  constant RecurringTransactions (line 39) | RecurringTransactions
  constant Signal (line 40) | Signal
  constant StandingOrders (line 41) | StandingOrders
  constant Statements (line 42) | Statements
  constant Transactions (line 43) | Transactions
  constant TransactionsRefresh (line 44) | TransactionsRefresh
  constant Transfer (line 45) | Transfer
  function GetProductByName (line 249) | func GetProductByName(name string) (plaidProduct, bool) {

FILE: pkg/analyzer/analyzers/planetscale/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 187) | func (p Permission) ToString() (string, error) {
    method ToID (line 195) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant ReadOrganization (line 10) | ReadOrganization Permission = iota
  constant ReadInvoices (line 11) | ReadInvoices Permission = iota
  constant ReadDatabases (line 12) | ReadDatabases Permission = iota
  constant ReadAuditLogs (line 13) | ReadAuditLogs Permission = iota
  constant CreateDatabases (line 14) | CreateDatabases Permission = iota
  constant DeleteDatabases (line 15) | DeleteDatabases Permission = iota
  constant ReadOauthApplications (line 16) | ReadOauthApplications Permission = iota
  constant WriteOauthTokens (line 17) | WriteOauthTokens Permission = iota
  constant ReadOauthTokens (line 18) | ReadOauthTokens Permission = iota
  constant DeleteOauthTokens (line 19) | DeleteOauthTokens Permission = iota
  constant ReadDatabase (line 20) | ReadDatabase Permission = iota
  constant WriteDatabase (line 21) | WriteDatabase Permission = iota
  constant DeleteDatabase (line 22) | DeleteDatabase Permission = iota
  constant ReadBranch (line 23) | ReadBranch Permission = iota
  constant CreateBranch (line 24) | CreateBranch Permission = iota
  constant DeleteBranch (line 25) | DeleteBranch Permission = iota
  constant DeleteBranchPassword (line 26) | DeleteBranchPassword Permission = iota
  constant DeleteProductionBranch (line 27) | DeleteProductionBranch Permission = iota
  constant DeleteProductionBranchPassword (line 28) | DeleteProductionBranchPassword Permission = iota
  constant ReadDeployRequest (line 29) | ReadDeployRequest Permission = iota
  constant CreateDeployRequest (line 30) | CreateDeployRequest Permission = iota
  constant ApproveDeployRequest (line 31) | ApproveDeployRequest Permission = iota
  constant ConnectBranch (line 32) | ConnectBranch Permission = iota
  constant ConnectProductionBranch (line 33) | ConnectProductionBranch Permission = iota
  constant ReadComment (line 34) | ReadComment Permission = iota
  constant CreateComment (line 35) | CreateComment Permission = iota
  constant RestoreBackup (line 36) | RestoreBackup Permission = iota
  constant WriteBackups (line 37) | WriteBackups Permission = iota
  constant ReadBackups (line 38) | ReadBackups Permission = iota
  constant DeleteBackups (line 39) | DeleteBackups Permission = iota
  constant RestoreProductionBranchBackup (line 40) | RestoreProductionBranchBackup Permission = iota
  constant DeleteProductionBranchBackups (line 41) | DeleteProductionBranchBackups Permission = iota
  function PermissionFromString (line 203) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 211) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/planetscale/planetscale.go
  type Analyzer (line 25) | type Analyzer struct
    method Type (line 29) | func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.Analy...
    method Analyze (line 31) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  function secretInfoToAnalyzerResult (line 47) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  type HttpStatusTest (line 94) | type HttpStatusTest struct
    method RunTest (line 111) | func (h *HttpStatusTest) RunTest(cfg *config.Config, headers map[strin...
  function StatusContains (line 102) | func StatusContains(status int, vals []int) bool {
  type Scopes (line 153) | type Scopes struct
  type Scope (line 162) | type Scope struct
  type BranchScope (line 167) | type BranchScope struct
  function readInScopes (line 172) | func readInScopes() (*Scopes, error) {
  function checkPermissions (line 181) | func checkPermissions(cfg *config.Config, scopes []Scope, id, key string...
  function checkBranchPermissions (line 197) | func checkBranchPermissions(cfg *config.Config, scopes []BranchScope, id...
  function checkBackupPermissions (line 216) | func checkBackupPermissions(cfg *config.Config, scopes []BranchScope, id...
  type SecretInfo (line 236) | type SecretInfo struct
  function AnalyzeAndPrintPermissions (line 243) | func AnalyzeAndPrintPermissions(cfg *config.Config, id, token string) {
  function AnalyzePermissions (line 261) | func AnalyzePermissions(cfg *config.Config, id, token string) (*SecretIn...
  type organization (line 311) | type organization struct
  type organizationJSON (line 316) | type organizationJSON struct
  function getOrganization (line 320) | func getOrganization(cfg *config.Config, id, key string) (*organization,...
  function getOrganizationPermissions (line 336) | func getOrganizationPermissions(cfg *config.Config, scopes *Scopes, id, ...
  function getOAuthApplicationPermissions (line 351) | func getOAuthApplicationPermissions(cfg *config.Config, scopes []Scope, ...
  type oauthApplicationJSON (line 367) | type oauthApplicationJSON struct
  function getOAuthApplicationId (line 373) | func getOAuthApplicationId(cfg *config.Config, id, key, organization str...
  function getDatabasePermissions (line 388) | func getDatabasePermissions(cfg *config.Config, scopes *Scopes, id, toke...
  function getBranchPermissions (line 412) | func getBranchPermissions(cfg *config.Config, scopes *Scopes, id, token,...
  type Database (line 460) | type Database struct
  type databasesJSON (line 464) | type databasesJSON struct
  function getDatabases (line 469) | func getDatabases(cfg *config.Config, id, key, organization string) ([]D...
  type Branch (line 488) | type Branch struct
  type branchesJSON (line 494) | type branchesJSON struct
  function getDbBranches (line 498) | func getDbBranches(cfg *config.Config, id, key, organization, db string)...
  type backupsJson (line 508) | type backupsJson struct
  function getBackupId (line 514) | func getBackupId(cfg *config.Config, id, key, organization, db, branch s...
  function sendGetRequest (line 527) | func sendGetRequest(cfg *config.Config, id, key, url string, responseObj...
  function printOrganizationPermissions (line 560) | func printOrganizationPermissions(permissions []string) {
  function printDatabasePermissions (line 576) | func printDatabasePermissions(permissions map[Database][]string) {
  function printUnverifiedPermissions (line 588) | func printUnverifiedPermissions(permissions []string) {

FILE: pkg/analyzer/analyzers/planetscale/planetscale_test.go
  function TestAnalyzer_Analyze (line 19) | func TestAnalyzer_Analyze(t *testing.T) {
  function sortBindings (line 95) | func sortBindings(bindings []analyzers.Binding) {

FILE: pkg/analyzer/analyzers/postgres/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 112) | func (p Permission) ToString() (string, error) {
    method ToID (line 120) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant BypassRls (line 10) | BypassRls Permission = iota
  constant Connect (line 11) | Connect Permission = iota
  constant Create (line 12) | Create Permission = iota
  constant CreateDb (line 13) | CreateDb Permission = iota
  constant CreateRole (line 14) | CreateRole Permission = iota
  constant Delete (line 15) | Delete Permission = iota
  constant InheritanceOfPrivs (line 16) | InheritanceOfPrivs Permission = iota
  constant Insert (line 17) | Insert Permission = iota
  constant Login (line 18) | Login Permission = iota
  constant References (line 19) | References Permission = iota
  constant Replication (line 20) | Replication Permission = iota
  constant Select (line 21) | Select Permission = iota
  constant Superuser (line 22) | Superuser Permission = iota
  constant Temp (line 23) | Temp Permission = iota
  constant Trigger (line 24) | Trigger Permission = iota
  constant Truncate (line 25) | Truncate Permission = iota
  constant Update (line 26) | Update Permission = iota
  function PermissionFromString (line 128) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 136) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/postgres/postgres.go
  type Analyzer (line 24) | type Analyzer struct
    method Type (line 28) | func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.Analy...
    method Analyze (line 30) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  function secretInfoToAnalyzerResult (line 43) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  function bakeUserBindings (line 68) | func bakeUserBindings(info *SecretInfo) (analyzers.Resource, []analyzers...
  function bakeDatabaseBindings (line 94) | func bakeDatabaseBindings(userResource analyzers.Resource, info *SecretI...
  function bakeTableBindings (line 133) | func bakeTableBindings(dbNameToResourceMap map[string]*analyzers.Resourc...
  type DBPrivs (line 180) | type DBPrivs struct
  type DB (line 186) | type DB struct
  type TablePrivs (line 192) | type TablePrivs struct
  type TableData (line 202) | type TableData struct
  constant pg_connect_timeout (line 209) | pg_connect_timeout = "connect_timeout"
  constant pg_dbname (line 210) | pg_dbname          = "dbname"
  constant pg_host (line 211) | pg_host            = "host"
  constant pg_password (line 212) | pg_password        = "password"
  constant pg_port (line 213) | pg_port            = "port"
  constant pg_requiressl (line 214) | pg_requiressl      = "requiressl"
  constant pg_sslmode (line 215) | pg_sslmode         = "sslmode"
  constant pg_sslmode_allow (line 216) | pg_sslmode_allow   = "allow"
  constant pg_sslmode_disable (line 217) | pg_sslmode_disable = "disable"
  constant pg_sslmode_prefer (line 218) | pg_sslmode_prefer  = "prefer"
  constant pg_sslmode_require (line 219) | pg_sslmode_require = "require"
  constant pg_user (line 220) | pg_user            = "user"
  type SecretInfo (line 225) | type SecretInfo struct
  function AnalyzeAndPrintPermissions (line 234) | func AnalyzeAndPrintPermissions(cfg *config.Config, connectionStr string) {
  function AnalyzePermissions (line 266) | func AnalyzePermissions(cfg *config.Config, connectionStr string) (*Secr...
  function isErrorDatabaseNotFound (line 306) | func isErrorDatabaseNotFound(err error, dbName string, user string) bool {
  function createConnection (line 316) | func createConnection(params map[string]string, database string) (*sql.D...
  function getUserPrivs (line 358) | func getUserPrivs(db *sql.DB) (string, map[string]bool, error) {
  function getDBPrivs (line 405) | func getDBPrivs(db *sql.DB) (string, []DB, error) {
  function printDBPrivs (line 462) | func printDBPrivs(dbs []DB, current_user string) {
  function buildDBPrivsStr (line 474) | func buildDBPrivsStr(db DB) string {
  function getDBWriter (line 489) | func getDBWriter(db DB, current_user string) func(a ...interface{}) stri...
  function buildSliceDBNames (line 501) | func buildSliceDBNames(dbs []DB) []string {
  function getTablePrivs (line 511) | func getTablePrivs(params map[string]string, databases []string) (map[st...
  function printTablePrivs (line 598) | func printTablePrivs(tables map[string]map[string]*TableData) {
  function printUserRoleAndPriv (line 618) | func printUserRoleAndPriv(role string, privs map[string]bool) {
  function buildTablePrivsStr (line 630) | func buildTablePrivsStr(privs TablePrivs) string {

FILE: pkg/analyzer/analyzers/postgres/postgres_test.go
  constant postgresUser (line 21) | postgresUser = "postgres"
  constant postgresPass (line 22) | postgresPass = "23201da=b56ca236f3dc6736c0f9afad"
  constant postgresHost (line 23) | postgresHost = "localhost"
  constant postgresPort (line 24) | postgresPort = "5434"
  constant defaultPort (line 25) | defaultPort  = "5432"
  function TestAnalyzer_Analyze (line 31) | func TestAnalyzer_Analyze(t *testing.T) {
  function sortBindings (line 108) | func sortBindings(bindings []analyzers.Binding) {
  function dockerLogLine (line 119) | func dockerLogLine(hash string, needle string) chan struct{} {
  function startPostgres (line 137) | func startPostgres() error {
  function stopPostgres (line 159) | func stopPostgres() {

FILE: pkg/analyzer/analyzers/posthog/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 327) | func (p Permission) ToString() (string, error) {
    method ToID (line 335) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant ActionRead (line 10) | ActionRead Permission = iota
  constant ActionWrite (line 11) | ActionWrite Permission = iota
  constant ActivityLogRead (line 12) | ActivityLogRead Permission = iota
  constant ActivityLogWrite (line 13) | ActivityLogWrite Permission = iota
  constant AnnotationRead (line 14) | AnnotationRead Permission = iota
  constant AnnotationWrite (line 15) | AnnotationWrite Permission = iota
  constant BatchExportRead (line 16) | BatchExportRead Permission = iota
  constant BatchExportWrite (line 17) | BatchExportWrite Permission = iota
  constant CohortRead (line 18) | CohortRead Permission = iota
  constant CohortWrite (line 19) | CohortWrite Permission = iota
  constant DashboardRead (line 20) | DashboardRead Permission = iota
  constant DashboardWrite (line 21) | DashboardWrite Permission = iota
  constant DashboardTemplateRead (line 22) | DashboardTemplateRead Permission = iota
  constant DashboardTemplateWrite (line 23) | DashboardTemplateWrite Permission = iota
  constant EarlyAccessFeatureRead (line 24) | EarlyAccessFeatureRead Permission = iota
  constant EarlyAccessFeatureWrite (line 25) | EarlyAccessFeatureWrite Permission = iota
  constant EventDefinitionRead (line 26) | EventDefinitionRead Permission = iota
  constant EventDefinitionWrite (line 27) | EventDefinitionWrite Permission = iota
  constant ErrorTrackingRead (line 28) | ErrorTrackingRead Permission = iota
  constant ErrorTrackingWrite (line 29) | ErrorTrackingWrite Permission = iota
  constant ExperimentRead (line 30) | ExperimentRead Permission = iota
  constant ExperimentWrite (line 31) | ExperimentWrite Permission = iota
  constant ExportRead (line 32) | ExportRead Permission = iota
  constant ExportWrite (line 33) | ExportWrite Permission = iota
  constant FeatureFlagRead (line 34) | FeatureFlagRead Permission = iota
  constant FeatureFlagWrite (line 35) | FeatureFlagWrite Permission = iota
  constant GroupRead (line 36) | GroupRead Permission = iota
  constant GroupWrite (line 37) | GroupWrite Permission = iota
  constant HogFunctionRead (line 38) | HogFunctionRead Permission = iota
  constant HogFunctionWrite (line 39) | HogFunctionWrite Permission = iota
  constant InsightRead (line 40) | InsightRead Permission = iota
  constant InsightWrite (line 41) | InsightWrite Permission = iota
  constant NotebookRead (line 42) | NotebookRead Permission = iota
  constant NotebookWrite (line 43) | NotebookWrite Permission = iota
  constant OrganizationRead (line 44) | OrganizationRead Permission = iota
  constant OrganizationWrite (line 45) | OrganizationWrite Permission = iota
  constant OrganizationMemberRead (line 46) | OrganizationMemberRead Permission = iota
  constant OrganizationMemberWrite (line 47) | OrganizationMemberWrite Permission = iota
  constant PersonRead (line 48) | PersonRead Permission = iota
  constant PersonWrite (line 49) | PersonWrite Permission = iota
  constant PluginRead (line 50) | PluginRead Permission = iota
  constant PluginWrite (line 51) | PluginWrite Permission = iota
  constant ProjectRead (line 52) | ProjectRead Permission = iota
  constant ProjectWrite (line 53) | ProjectWrite Permission = iota
  constant PropertyDefinitionRead (line 54) | PropertyDefinitionRead Permission = iota
  constant PropertyDefinitionWrite (line 55) | PropertyDefinitionWrite Permission = iota
  constant QueryRead (line 56) | QueryRead Permission = iota
  constant SessionRecordingRead (line 57) | SessionRecordingRead Permission = iota
  constant SessionRecordingWrite (line 58) | SessionRecordingWrite Permission = iota
  constant SessionRecordingPlaylistRead (line 59) | SessionRecordingPlaylistRead Permission = iota
  constant SessionRecordingPlaylistWrite (line 60) | SessionRecordingPlaylistWrite Permission = iota
  constant SharingConfigurationRead (line 61) | SharingConfigurationRead Permission = iota
  constant SharingConfigurationWrite (line 62) | SharingConfigurationWrite Permission = iota
  constant SubscriptionRead (line 63) | SubscriptionRead Permission = iota
  constant SubscriptionWrite (line 64) | SubscriptionWrite Permission = iota
  constant SurveyRead (line 65) | SurveyRead Permission = iota
  constant SurveyWrite (line 66) | SurveyWrite Permission = iota
  constant UserRead (line 67) | UserRead Permission = iota
  constant WebhookRead (line 68) | WebhookRead Permission = iota
  constant WebhookWrite (line 69) | WebhookWrite Permission = iota
  function PermissionFromString (line 343) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 351) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/posthog/posthog.go
  constant USDomain (line 27) | USDomain = "https://us.posthog.com"
  constant EUDomain (line 28) | EUDomain = "https://eu.posthog.com"
  type Analyzer (line 31) | type Analyzer struct
    method Type (line 35) | func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.Analy...
    method Analyze (line 37) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  function secretInfoToAnalyzerResult (line 49) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  type HttpStatusTest (line 124) | type HttpStatusTest struct
    method RunTest (line 141) | func (h *HttpStatusTest) RunTest(cfg *config.Config, client *http.Clie...
  function StatusContains (line 132) | func StatusContains(status int, vals []int) bool {
  type ScopesConfig (line 181) | type ScopesConfig struct
  type Scope (line 187) | type Scope struct
  type ScopeTest (line 192) | type ScopeTest struct
  function readInScopesConfig (line 197) | func readInScopesConfig() (*ScopesConfig, error) {
  function checkPermissions (line 206) | func checkPermissions(cfg *config.Config, client *http.Client, domain st...
  type ProjectPermissions (line 244) | type ProjectPermissions struct
  type SecretInfo (line 249) | type SecretInfo struct
  function AnalyzeAndPrintPermissions (line 258) | func AnalyzeAndPrintPermissions(cfg *config.Config, key string) {
  function AnalyzePermissions (line 285) | func AnalyzePermissions(cfg *config.Config, key string) (*SecretInfo, er...
  function checkGeneralPermissions (line 364) | func checkGeneralPermissions(cfg *config.Config, client *http.Client, do...
  function checkOrganizationPermissions (line 368) | func checkOrganizationPermissions(
  function checkProjectPermissions (line 379) | func checkProjectPermissions(
  type User (line 402) | type User struct
  type Organization (line 410) | type Organization struct
  type Project (line 416) | type Project struct
  function resolveDomainAndUser (line 425) | func resolveDomainAndUser(cfg *config.Config, client *http.Client, key s...
  function getOrganization (line 465) | func getOrganization(cfg *config.Config, client *http.Client, domain str...
  function printUser (line 493) | func printUser(user User) {
  function printOrganizationPermissions (line 500) | func printOrganizationPermissions(organization Organization, permissions...
  function printProjectPermissions (line 516) | func printProjectPermissions(projectPermissions []ProjectPermissions) {
  function printUnverifiedPermissions (line 535) | func printUnverifiedPermissions(permissions map[Permission]struct{}) {

FILE: pkg/analyzer/analyzers/posthog/posthog_test.go
  function TestAnalyzer_Analyze (line 19) | func TestAnalyzer_Analyze(t *testing.T) {
  function sortBindings (line 93) | func sortBindings(bindings []analyzers.Binding) {

FILE: pkg/analyzer/analyzers/postman/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 152) | func (p Permission) ToString() (string, error) {
    method ToID (line 160) | func (p Permission) ToID() (int, error) {
  constant NoAccess (line 9) | NoAccess Permission = iota
  constant UserAdd (line 10) | UserAdd Permission = iota
  constant UserRemove (line 11) | UserRemove Permission = iota
  constant TeamAdminManage (line 12) | TeamAdminManage Permission = iota
  constant TeamDevelopersManage (line 13) | TeamDevelopersManage Permission = iota
  constant SsoManage (line 14) | SsoManage Permission = iota
  constant CustomDomainAdd (line 15) | CustomDomainAdd Permission = iota
  constant CustomDomainEdit (line 16) | CustomDomainEdit Permission = iota
  constant CustomDomainRemove (line 17) | CustomDomainRemove Permission = iota
  constant AuditLogsView (line 18) | AuditLogsView Permission = iota
  constant UsageDataView (line 19) | UsageDataView Permission = iota
  constant BillingMembersManage (line 20) | BillingMembersManage Permission = iota
  constant PaymentManage (line 21) | PaymentManage Permission = iota
  constant PlanUpdate (line 22) | PlanUpdate Permission = iota
  constant TeamWorkspacesView (line 23) | TeamWorkspacesView Permission = iota
  constant TeamWorkspacesCreate (line 24) | TeamWorkspacesCreate Permission = iota
  constant TeamPublicProfileEnable (line 25) | TeamPublicProfileEnable Permission = iota
  constant TeamPrivateApiNetworkManage (line 26) | TeamPrivateApiNetworkManage Permission = iota
  constant ParternerWorkspaceView (line 27) | ParternerWorkspaceView Permission = iota
  constant ParternerWorkspaceManage (line 28) | ParternerWorkspaceManage Permission = iota
  constant ParternerWorkspaceVisibilityManage (line 29) | ParternerWorkspaceVisibilityManage Permission = iota
  constant PartnersManage (line 30) | PartnersManage Permission = iota
  constant FlowAdd (line 31) | FlowAdd Permission = iota
  constant FlowEdit (line 32) | FlowEdit Permission = iota
  constant FlowRun (line 33) | FlowRun Permission = iota
  constant FlowPublish (line 34) | FlowPublish Permission = iota
  function PermissionFromString (line 168) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 176) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/postman/postman.go
  type Analyzer (line 20) | type Analyzer struct
    method Type (line 24) | func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.Analy...
    method Analyze (line 26) | func (a Analyzer) Analyze(_ context.Context, credInfo map[string]strin...
  function secretInfoToAnalyzerResult (line 38) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  function bakePermissions (line 83) | func bakePermissions(roles []string) []analyzers.Permission {
  type UserInfoJSON (line 111) | type UserInfoJSON struct
  type WorkspaceJSON (line 122) | type WorkspaceJSON struct
  function getUserInfo (line 131) | func getUserInfo(cfg *config.Config, key string) (UserInfoJSON, error) {
  function getWorkspaces (line 158) | func getWorkspaces(cfg *config.Config, key string) (WorkspaceJSON, error) {
  type SecretInfo (line 185) | type SecretInfo struct
  function AnalyzeAndPrintPermissions (line 191) | func AnalyzeAndPrintPermissions(cfg *config.Config, key string) {
  function AnalyzePermissions (line 216) | func AnalyzePermissions(cfg *config.Config, key string) (*SecretInfo, er...
  function printUserInfo (line 238) | func printUserInfo(me UserInfoJSON) {
  function printWorkspaces (line 260) | func printWorkspaces(workspaces WorkspaceJSON) {

FILE: pkg/analyzer/analyzers/postman/postman_test.go
  function TestAnalyzer_Analyze (line 19) | func TestAnalyzer_Analyze(t *testing.T) {
  function sortBindings (line 93) | func sortBindings(bindings []analyzers.Binding) {

FILE: pkg/analyzer/analyzers/privatekey/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 112) | func (p Permission) ToString() (string, error) {
    method ToID (line 120) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant Digitalsignature (line 10) | Digitalsignature Permission = iota
  constant Nonrepudiation (line 11) | Nonrepudiation Permission = iota
  constant Keyencipherment (line 12) | Keyencipherment Permission = iota
  constant Dataencipherment (line 13) | Dataencipherment Permission = iota
  constant Keyagreement (line 14) | Keyagreement Permission = iota
  constant Certificatesigning (line 15) | Certificatesigning Permission = iota
  constant Crlsigning (line 16) | Crlsigning Permission = iota
  constant Encipheronly (line 17) | Encipheronly Permission = iota
  constant Decipheronly (line 18) | Decipheronly Permission = iota
  constant Serverauth (line 19) | Serverauth Permission = iota
  constant Clientauth (line 20) | Clientauth Permission = iota
  constant Codesigning (line 21) | Codesigning Permission = iota
  constant Emailprotection (line 22) | Emailprotection Permission = iota
  constant Timestamping (line 23) | Timestamping Permission = iota
  constant Ocspsigning (line 24) | Ocspsigning Permission = iota
  constant Clone (line 25) | Clone Permission = iota
  constant Push (line 26) | Push Permission = iota
  function PermissionFromString (line 128) | func PermissionFromString(s string) (Permission, error) {
  function PermissionFromID (line 136) | func PermissionFromID(id int) (Permission, error) {

FILE: pkg/analyzer/analyzers/privatekey/privatekey.go
  type Analyzer (line 25) | type Analyzer struct
    method Type (line 29) | func (Analyzer) Type() analyzers.AnalyzerType { return analyzers.Analy...
    method Analyze (line 31) | func (a Analyzer) Analyze(ctx context.Context, credInfo map[string]str...
  type SecretInfo (line 46) | type SecretInfo struct
  function AnalyzePermissions (line 52) | func AnalyzePermissions(ctx context.Context, cfg *config.Config, token s...
  function AnalyzeAndPrintPermissions (line 122) | func AnalyzeAndPrintPermissions(cfg *config.Config, key string) {
  function printUserInfo (line 164) | func printUserInfo(username string) {
  function printTLSCertificateResult (line 169) | func printTLSCertificateResult(result *privatekey.DriftwoodResult) {
  function secretInfoToAnalyzerResult (line 190) | func secretInfoToAnalyzerResult(info *SecretInfo) *analyzers.AnalyzerRes...
  function bakeGithubResources (line 219) | func bakeGithubResources(username *string) []analyzers.Binding {
  function bakeGitlabResources (line 234) | func bakeGitlabResources(username *string) []analyzers.Binding {
  function bakeTLSResources (line 249) | func bakeTLSResources(result *privatekey.DriftwoodResult) ([]analyzers.B...
  function analyzeFingerprint (line 289) | func analyzeFingerprint(ctx context.Context, fingerprint string) (*priva...
  function analyzeGithubUser (line 301) | func analyzeGithubUser(ctx context.Context, parsedKey any) (*string, err...
  function analyzeGitlabUser (line 305) | func analyzeGitlabUser(ctx context.Context, parsedKey any) (*string, err...
  function replaceSpacesWithNewlines (line 310) | func replaceSpacesWithNewlines(privateKey string) string {

FILE: pkg/analyzer/analyzers/privatekey/privatekey_test.go
  function TestAnalyzer_Analyze (line 18) | func TestAnalyzer_Analyze(t *testing.T) {

FILE: pkg/analyzer/analyzers/sendgrid/permissions.go
  type Permission (line 6) | type Permission
    method ToString (line 962) | func (p Permission) ToString() (string, error) {
    method ToID (line 970) | func (p Permission) ToID() (int, error) {
  constant Invalid (line 9) | Invalid Permission = iota
  constant AccessSettingsActivityRead (line 10) | AccessSettingsActivityRead Permission = iota
  constant AccessSettingsWhitelistCreate (line 11) | AccessSettingsWhitelistCreate Permission = iota
  constant AccessSettingsWhitelistDelete (line 12) | AccessSettingsWhitelistDelete Permission = iota
  constant AccessSettingsWhitelistRead (line 13) | AccessSettingsWhitelistRead Permission = iota
  constant AccessSettingsWhitelistUpdate (line 14) | AccessSettingsWhitelistUpdate Permission = iota
  constant AlertsCreate (line 15) | AlertsCreate Permission = iota
  constant AlertsDelete (line 16) | AlertsDelete Permission = iota
  constant AlertsRead (line 17) | AlertsRead Permission = iota
  constant AlertsUpdate (line 18
Copy disabled (too large) Download .json
Condensed preview — 3357 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (17,828K chars).
[
  {
    "path": ".captain/config.yaml",
    "chars": 482,
    "preview": "test-suites:\n  detectors:\n    command: gotestsum --jsonfile tmp/go-test.json --raw-command -- go test -tags=detectors -t"
  },
  {
    "path": ".gitattributes",
    "chars": 33,
    "preview": "*.go text eol=lf\n*.md text eol=lf"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 1480,
    "preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: \"\"\nlabels: bug, needs triage\nassignees: trufflesec"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 1034,
    "preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: \"\"\nlabels: enhancement, needs triage\nassignees:"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 445,
    "preview": "<!--\nPlease create an issue to collect feedback prior to feature additions. Please also reference that issue in any PRs."
  },
  {
    "path": ".github/community_note.md",
    "chars": 444,
    "preview": "## Community Note\n\nPlease vote on this issue by adding a 👍 reaction to the original issue to help the community and main"
  },
  {
    "path": ".github/renovate.json",
    "chars": 155,
    "preview": "{\n  \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n  \"extends\": [\n    \"config:base\"\n  ],\n  \"prConcurren"
  },
  {
    "path": ".github/workflows/README.md",
    "chars": 2155,
    "preview": "# GitHub Workflows\n\nThis directory contains GitHub Actions workflows for the TruffleHog repository.\n\n## PR Approval Chec"
  },
  {
    "path": ".github/workflows/TESTING.md",
    "chars": 1354,
    "preview": "# Testing\n\nMost testing is handled automatically by our GitHub Actions workflows.\n\n## Local GitHub Action Testing\n\nIn so"
  },
  {
    "path": ".github/workflows/codeql-analysis.yml",
    "chars": 1910,
    "preview": "# For most projects, this workflow file will not need changing; you simply need\n# to commit it to your repository.\n#\n# Y"
  },
  {
    "path": ".github/workflows/detector-tests.yml",
    "chars": 734,
    "preview": "name: Detectors Aggregation\n\non:\n  workflow_dispatch:\n  schedule:\n    - cron: \"0 8 * * *\"\n\njobs:\n  test-detectors:\n    i"
  },
  {
    "path": ".github/workflows/lint.yml",
    "chars": 1318,
    "preview": "name: Lint\n\non:\n  push:\n    tags:\n      - v*\n  pull_request:\n\npermissions:\n  contents: read\n  pull-requests: read\n\njobs:"
  },
  {
    "path": ".github/workflows/performance.yml",
    "chars": 3025,
    "preview": "name: Performance Test\n\non: [pull_request]\n\njobs:\n  speed:\n    #   skip if PR is from a fork.\n    # TODO: this could pro"
  },
  {
    "path": ".github/workflows/release-guard.yml",
    "chars": 1238,
    "preview": "name: Release Guard\non:\n  release:\n    types: [created]\n\npermissions:\n  contents: write\n\njobs:\n  unset-latest:\n    runs-"
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 1679,
    "preview": "name: Release\n\non:\n  push:\n    tags:\n      - v*\n\npermissions:\n  contents: write\n  packages: write\n  id-token: write\n\njob"
  },
  {
    "path": ".github/workflows/secrets.yml",
    "chars": 537,
    "preview": "name: Scan for secrets\n\non:\n  push:\n    tags:\n      - v*\n    branches:\n      - main\n  pull_request:\n  workflow_dispatch:"
  },
  {
    "path": ".github/workflows/smoke.yml",
    "chars": 1528,
    "preview": "name: Smoke\n\non:\n  pull_request:\n\njobs:\n  smoke:\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout code\n     "
  },
  {
    "path": ".github/workflows/test.yml",
    "chars": 2380,
    "preview": "name: Test\n\non:\n  push:\n    tags:\n      - v*\n    branches:\n      - main\n  pull_request:\n\njobs:\n  test:\n    if: ${{ githu"
  },
  {
    "path": ".gitignore",
    "chars": 168,
    "preview": ".idea\ndist\n.env\n*.test\n\n# binary\ntrufflehog\ntmp/go-test.json\n.captain/detectors/timings.yaml\n.captain/detectors/quaranti"
  },
  {
    "path": ".goreleaser.yml",
    "chars": 5304,
    "preview": "version: 2\nrelease:\n  make_latest: false\nbuilds:\n  - id: trufflehog-upx\n    binary: trufflehog\n    ldflags:\n      - -s -"
  },
  {
    "path": ".pre-commit-config.yaml",
    "chars": 215,
    "preview": "repos:\n  - repo: https://github.com/rhysd/actionlint\n    rev: v1.6.24\n    hooks:\n      - id: actionlint\n\n  - repo: https"
  },
  {
    "path": ".pre-commit-hooks.yaml",
    "chars": 243,
    "preview": "- id: trufflehog\n  name: TruffleHog\n  description: Detect secrets in your data with TruffleHog.\n  entry: trufflehog git "
  },
  {
    "path": "CODEOWNERS",
    "chars": 2275,
    "preview": "# catch-all\n* @trufflesecurity/product-eng\n\n# Scanning\npkg/sources/ @trufflesecurity/Scanning\npkg/writers/ @trufflesecur"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 3356,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 2438,
    "preview": "# Contribution guidelines\n\nPlease create an issue to collect feedback prior to feature additions. If possible try to kee"
  },
  {
    "path": "Dockerfile",
    "chars": 621,
    "preview": "FROM --platform=${BUILDPLATFORM} golang:bullseye as builder\n\nWORKDIR /build\nCOPY . . \nENV CGO_ENABLED=0\nARG TARGETOS TAR"
  },
  {
    "path": "Dockerfile.goreleaser",
    "chars": 280,
    "preview": "FROM alpine:3.22\n\nRUN apk add --no-cache bash git openssh-client ca-certificates \\\n    && rm -rf /var/cache/apk/* && upd"
  },
  {
    "path": "LICENSE",
    "chars": 35445,
    "preview": " GNU AFFERO GENERAL PUBLIC LICENSE\n                       Version 3, 19 November 2007\n\n Copyright (C) 2007 Free Software"
  },
  {
    "path": "Makefile",
    "chars": 1956,
    "preview": "PROTOS_IMAGE ?= trufflesecurity/protos:1.22\n\n.PHONY: check\n.PHONY: lint\n.PHONY: test\n.PHONY: test-race\n.PHONY: run\n.PHON"
  },
  {
    "path": "PreCommit.md",
    "chars": 7455,
    "preview": "# TruffleHog Pre-Commit Hooks\n\nPre-commit hooks are scripts that run automatically before a commit is completed, allowin"
  },
  {
    "path": "README.md",
    "chars": 32174,
    "preview": "<p align=\"center\">\n  <img alt=\"GoReleaser Logo\" src=\"https://storage.googleapis.com/trufflehog-static-sources/pixel_pig."
  },
  {
    "path": "SECURITY.md",
    "chars": 2424,
    "preview": "Please report security issues to security@trufflesec.com and include `trufflehog` in the subject line. If your vulnerabi"
  },
  {
    "path": "action.yml",
    "chars": 3717,
    "preview": "name: 'TruffleHog OSS'\ndescription: 'Find and verify leaked credentials in your source code.'\nauthor: Truffle Security C"
  },
  {
    "path": "docs/concurrency.md",
    "chars": 2290,
    "preview": "\n\n## Concurrency\n\n```mermaid\nsequenceDiagram\n    %% Setup the workers\n    participant Main\n    Note over Main: e.startWo"
  },
  {
    "path": "docs/iterative_decoding_performance.md",
    "chars": 2745,
    "preview": "# Iterative Decoding Performance\n\nPerformance characteristics of the `--max-decode-depth` feature, which enables\nchained"
  },
  {
    "path": "docs/process_flow.md",
    "chars": 3979,
    "preview": "# TruffleHog Process Flows\n\n## Scans\n\n## Data Flow\n\n```mermaid\nflowchart LR\n    SourceDecomposition[\"`**Source Decomposi"
  },
  {
    "path": "entrypoint.sh",
    "chars": 374,
    "preview": "#!/usr/bin/env bash\n\n# Parse the last argument into an array of extra_args.\nmapfile -t extra_args < <(bash -c \"for arg i"
  },
  {
    "path": "examples/README.md",
    "chars": 725,
    "preview": "# Examples\nThis folder contains various examples like custom detectors, scripts, etc. Feel free to contribute!\n\n### Gene"
  },
  {
    "path": "examples/generic.yml",
    "chars": 455,
    "preview": "detectors:\n- name: generic-api-key\n  keywords:\n  - key\n  - api\n  - token\n  - secret\n  - client\n  - passwd\n  - password\n "
  },
  {
    "path": "examples/generic_with_filters.yml",
    "chars": 22984,
    "preview": "detectors:\n- name: generic-password\n  keywords:\n  - pass\n  - access\n  - auth\n  - credential\n  - cred\n  - secret\n  - toke"
  },
  {
    "path": "go.mod",
    "chars": 16305,
    "preview": "module github.com/trufflesecurity/trufflehog/v3\n\ngo 1.24.0\n\ntoolchain go1.24.5\n\nreplace github.com/jpillora/overseer => "
  },
  {
    "path": "go.sum",
    "chars": 106313,
    "preview": "cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=\ncel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ"
  },
  {
    "path": "hack/Dockerfile.protos",
    "chars": 2210,
    "preview": "# trufflesecurity/protos:1.23\n\nFROM golang:1.24-bullseye\n\nARG TARGETARCH\nARG TARGETOS\n\nENV PROTOC_VER=25.3\nENV PROTOC_GE"
  },
  {
    "path": "hack/bench/plot.gp",
    "chars": 264,
    "preview": "set terminal png size 800,600\nset output \"hack/bench/versions.png\"\n\nset title \"User Time vs. Version\"\nset xlabel \"Versio"
  },
  {
    "path": "hack/bench/plot.sh",
    "chars": 334,
    "preview": "#!/bin/bash\n\nif [ $# -ne 2 ]; then\n  echo \"Usage: $0 <repository to clone> <number_of_versions_back_to_test>\"\n  exit 1\nf"
  },
  {
    "path": "hack/bench/plot.txt",
    "chars": 360,
    "preview": "v3.33.0: 1.402\nv3.32.2: 1.298\nv3.32.1: 1.332\nv3.32.0: 1.348\nv3.31.6: 2.470\nv3.31.5: 2.462\nv3.31.4: 2.460\nv3.31.3: 2.418\n"
  },
  {
    "path": "hack/bench/versions.sh",
    "chars": 2127,
    "preview": "#!/bin/bash\n\nif [ $# -ne 2 ]; then\n  echo \"Usage: $0 <repository to clone> <number_of_versions_back_to_test>\"\n  exit 1\nf"
  },
  {
    "path": "hack/docs/Adding_Detectors_Internal.md",
    "chars": 7935,
    "preview": "# Secret Detectors\n\nSecret Detectors have these two major functions:\n\n1. Given some bytes, extract possible secrets, typ"
  },
  {
    "path": "hack/docs/Adding_Detectors_external.md",
    "chars": 8288,
    "preview": "# Secret Detectors\n\nSecret Detectors have these two major functions:\n\n1. Given some bytes, extract possible secrets, typ"
  },
  {
    "path": "hack/generate/generate.go",
    "chars": 3902,
    "preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"text/template\"\n\n\t\"github.com/alecthomas/kingpin"
  },
  {
    "path": "hack/generate/test.sh",
    "chars": 297,
    "preview": "#!/usr/bin/env bash\nset -eu\n\nfunction cleanup {\n  rm -rf pkg/detectors/test\n}\ntrap cleanup EXIT\n\nexport CGO_ENABLED=0\n\ne"
  },
  {
    "path": "hack/semgrep-rules/detectors.yaml",
    "chars": 284,
    "preview": "rules:\n  - id: no-printing-in-detectors\n    patterns:\n      - pattern-either:\n          - pattern: fmt.Println(...)\n    "
  },
  {
    "path": "hack/snifftest/README.md",
    "chars": 447,
    "preview": "# snifftest\n\nSee the help pages with this command, or look further below to get started quickly.\n\n```\ngo run hack/snifft"
  },
  {
    "path": "hack/snifftest/main.go",
    "chars": 7474,
    "preview": "package main\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"github.com/alecth"
  },
  {
    "path": "hack/snifftest/snifftest.sh",
    "chars": 727,
    "preview": "#!/usr/bin/env bash\n\nREPO_ARRAY=(\n        \"https://github.com/Netflix/Hystrix.git\"\n        # \"https://github.com/faceboo"
  },
  {
    "path": "main.go",
    "chars": 62447,
    "preview": "package main\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t_ \"net/http/pprof\"\n\t\"os\"\n\t\"os/exec\"\n\t\"os/signal\"\n\t\"run"
  },
  {
    "path": "pkg/analyzer/README.md",
    "chars": 763,
    "preview": "# Implementing Analyzers\n\n## Defining the Permissions\n\nPermissions can be defined in:\n- lower snake case as `permission_"
  },
  {
    "path": "pkg/analyzer/analyzers/airbrake/airbrake.go",
    "chars": 5218,
    "preview": "package airbrake\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"os\"\n\t\"strconv\"\n\n\t\"github.com/fatih/color\"\n\t\"github.com/"
  },
  {
    "path": "pkg/analyzer/analyzers/airbrake/scopes.go",
    "chars": 1113,
    "preview": "package airbrake\n\nvar scope_order = []string{\n\t\"Authentication\",\n\t\"Performance Monitoring\",\n\t\"Error Notification\",\n\t\"Pro"
  },
  {
    "path": "pkg/analyzer/analyzers/airtable/airtableoauth/airtable.go",
    "chars": 2078,
    "preview": "package airtableoauth\n\nimport (\n\t\"errors\"\n\n\t\"github.com/fatih/color\"\n\n\t\"github.com/trufflesecurity/trufflehog/v3/pkg/ana"
  },
  {
    "path": "pkg/analyzer/analyzers/airtable/airtableoauth/airtable_test.go",
    "chars": 2908,
    "preview": "package airtableoauth\n\nimport (\n\t_ \"embed\"\n\t\"encoding/json\"\n\t\"sort\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/trufflesecurity/tru"
  },
  {
    "path": "pkg/analyzer/analyzers/airtable/airtableoauth/expected_output.json",
    "chars": 1070,
    "preview": "{\r\n    \"AnalyzerType\": 28,\r\n    \"Bindings\": [\r\n        {\r\n            \"Resource\": {\r\n                \"Name\": \"usraS0CjAA"
  },
  {
    "path": "pkg/analyzer/analyzers/airtable/airtablepat/airtable.go",
    "chars": 6859,
    "preview": "package airtablepat\n\nimport (\n\t_ \"embed\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"github.com/fatih/color\"\n\n\t\"gith"
  },
  {
    "path": "pkg/analyzer/analyzers/airtable/airtablepat/airtable_test.go",
    "chars": 2916,
    "preview": "package airtablepat\n\nimport (\n\t_ \"embed\"\n\t\"encoding/json\"\n\t\"sort\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/trufflesecurity/truff"
  },
  {
    "path": "pkg/analyzer/analyzers/airtable/airtablepat/expected_output.json",
    "chars": 1070,
    "preview": "{\r\n    \"AnalyzerType\": 29,\r\n    \"Bindings\": [\r\n        {\r\n            \"Resource\": {\r\n                \"Name\": \"usraS0CjAA"
  },
  {
    "path": "pkg/analyzer/analyzers/airtable/airtablepat/requests.go",
    "chars": 1056,
    "preview": "package airtablepat\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"strings\"\n\n\t\"github.com/trufflesecurity/trufflehog/v3"
  },
  {
    "path": "pkg/analyzer/analyzers/airtable/common/common.go",
    "chars": 5577,
    "preview": "//go:generate generate_permissions permissions.yaml permissions.go common\npackage common\n\nimport (\n\t\"encoding/json\"\n\t\"fm"
  },
  {
    "path": "pkg/analyzer/analyzers/airtable/common/endpoints.go",
    "chars": 4623,
    "preview": "package common\n\nimport \"net/http\"\n\ntype ErrorResponse struct {\n\tType string\n}\n\ntype Endpoint struct {\n\tURL              "
  },
  {
    "path": "pkg/analyzer/analyzers/airtable/common/models.go",
    "chars": 443,
    "preview": "package common\n\ntype AirtableUserInfo struct {\n\tID     string   `json:\"id\"`\n\tEmail  *string  `json:\"email,omitempty\"`\n\tS"
  },
  {
    "path": "pkg/analyzer/analyzers/airtable/common/permissions.go",
    "chars": 6481,
    "preview": "// Code generated by go generate; DO NOT EDIT.\npackage common\n\nimport \"errors\"\n\ntype Permission int\n\nconst (\n    Invalid"
  },
  {
    "path": "pkg/analyzer/analyzers/airtable/common/permissions.yaml",
    "chars": 641,
    "preview": "permissions:\n  - data.records:read\n  - data.records:write\n  - data.recordComments:read\n  - data.recordComments:write\n  -"
  },
  {
    "path": "pkg/analyzer/analyzers/airtable/common/scopes.go",
    "chars": 3984,
    "preview": "package common\n\nvar scopeToPermissions = map[string][]string{\n\t// Basic Scopes\n\t\"data.records:read\": {\n\t\t\"List records\","
  },
  {
    "path": "pkg/analyzer/analyzers/analyzers.go",
    "chars": 6990,
    "preview": "package analyzers\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"io\"\n\t\"net/http\"\n\t\"sort\"\n\n\t\"github.com/fatih/color\"\n\n\t\"github.com"
  },
  {
    "path": "pkg/analyzer/analyzers/anthropic/anthropic.go",
    "chars": 5046,
    "preview": "//go:generate generate_permissions permissions.yaml permissions.go anthropic\npackage anthropic\n\nimport (\n\t\"errors\"\n\t\"os\""
  },
  {
    "path": "pkg/analyzer/analyzers/anthropic/anthropic_test.go",
    "chars": 2357,
    "preview": "package anthropic\n\nimport (\n\t_ \"embed\"\n\t\"encoding/json\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/trufflesecurity/trufflehog/v3/p"
  },
  {
    "path": "pkg/analyzer/analyzers/anthropic/permissions.go",
    "chars": 1453,
    "preview": "// Code generated by go generate; DO NOT EDIT.\npackage anthropic\n\nimport \"errors\"\n\ntype Permission int\n\nconst (\n    Inva"
  },
  {
    "path": "pkg/analyzer/analyzers/anthropic/permissions.yaml",
    "chars": 29,
    "preview": "permissions:\n  - full_access\n"
  },
  {
    "path": "pkg/analyzer/analyzers/anthropic/requests.go",
    "chars": 9294,
    "preview": "package anthropic\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n)\n\nvar endpoints = map[string]string{\n\t// api key "
  },
  {
    "path": "pkg/analyzer/analyzers/anthropic/result_output.json",
    "chars": 3718,
    "preview": "{\n  \"AnalyzerType\": 2,\n  \"Bindings\": [\n    {\n      \"Resource\": {\n        \"Name\": \"Claude Sonnet 4.6\",\n        \"FullyQual"
  },
  {
    "path": "pkg/analyzer/analyzers/asana/asana.go",
    "chars": 4019,
    "preview": "//go:generate generate_permissions permissions.yaml permissions.go asana\npackage asana\n\n// ToDo: Add OAuth token support"
  },
  {
    "path": "pkg/analyzer/analyzers/asana/asana_test.go",
    "chars": 2890,
    "preview": "package asana\n\nimport (\n\t_ \"embed\"\n\t\"encoding/json\"\n\t\"sort\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/trufflesecurity/trufflehog/"
  },
  {
    "path": "pkg/analyzer/analyzers/asana/expected_output.json",
    "chars": 9209,
    "preview": "{\"AnalyzerType\":0,\"Bindings\":[{\"Resource\":{\"Name\":\"rendyplayground\",\"FullyQualifiedName\":\"1200552284974896\",\"Type\":\"user"
  },
  {
    "path": "pkg/analyzer/analyzers/asana/permissions.go",
    "chars": 8306,
    "preview": "// Code generated by go generate; DO NOT EDIT.\npackage asana\n\nimport \"errors\"\n\ntype Permission int\n\nconst (\n    Invalid "
  },
  {
    "path": "pkg/analyzer/analyzers/asana/permissions.yaml",
    "chars": 805,
    "preview": "permissions:\n  - allocations:read\n  - allocations:write\n  - attachments:read\n  - attachments:write\n  - autdit_logs:read\n"
  },
  {
    "path": "pkg/analyzer/analyzers/bitbucket/bitbucket.go",
    "chars": 8207,
    "preview": "//go:generate generate_permissions permissions.yaml permissions.go bitbucket\npackage bitbucket\n\nimport (\n\t\"encoding/json"
  },
  {
    "path": "pkg/analyzer/analyzers/bitbucket/bitbucket_test.go",
    "chars": 2656,
    "preview": "package bitbucket\n\nimport (\n\t_ \"embed\"\n\t\"encoding/json\"\n\t\"sort\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/trufflesecurity/truffle"
  },
  {
    "path": "pkg/analyzer/analyzers/bitbucket/expected_output.json",
    "chars": 2260,
    "preview": "{\n  \"AnalyzerType\": 3,\n  \"Bindings\": [\n   {\n    \"Resource\": {\n     \"Name\": \"Repository\",\n     \"FullyQualifiedName\": \"bit"
  },
  {
    "path": "pkg/analyzer/analyzers/bitbucket/permissions.go",
    "chars": 3677,
    "preview": "// Code generated by go generate; DO NOT EDIT.\npackage bitbucket\n\nimport \"errors\"\n\ntype Permission int\n\nconst (\n    Inva"
  },
  {
    "path": "pkg/analyzer/analyzers/bitbucket/permissions.yaml",
    "chars": 236,
    "preview": "permissions:\n- project\n- project:admin\n- repository\n- repository:write\n- repository:admin\n- repository:delete\n- pullrequ"
  },
  {
    "path": "pkg/analyzer/analyzers/bitbucket/scopes.go",
    "chars": 2785,
    "preview": "package bitbucket\n\nvar credential_type_map = map[string]string{\n\t\"repo_access_token\":      \"Repository Access Token (Can"
  },
  {
    "path": "pkg/analyzer/analyzers/client.go",
    "chars": 4196,
    "preview": "package analyzers\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/trufflesecurity/trufflehog/v3/pkg/"
  },
  {
    "path": "pkg/analyzer/analyzers/client_test.go",
    "chars": 2599,
    "preview": "package analyzers\n\nimport (\n\t\"net/http\"\n\t\"net/http/httptest\"\n\t\"testing\"\n)\n\nfunc TestAnalyzerClientUnsafeSuccess(t *testi"
  },
  {
    "path": "pkg/analyzer/analyzers/databricks/databricks.go",
    "chars": 5011,
    "preview": "//go:generate generate_permissions permissions.yaml permissions.go databricks\npackage databricks\n\nimport (\n\t\"fmt\"\n\t\"os\"\n"
  },
  {
    "path": "pkg/analyzer/analyzers/databricks/databricks_test.go",
    "chars": 3026,
    "preview": "package databricks\n\nimport (\n\t_ \"embed\"\n\t\"encoding/json\"\n\t\"sort\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/trufflesecurity/truffl"
  },
  {
    "path": "pkg/analyzer/analyzers/databricks/models.go",
    "chars": 2855,
    "preview": "package databricks\n\ntype ResourceType string\n\nfunc (r ResourceType) String() string {\n\treturn string(r)\n}\n\nconst (\n\tCurr"
  },
  {
    "path": "pkg/analyzer/analyzers/databricks/permissions.go",
    "chars": 1568,
    "preview": "// Code generated by go generate; DO NOT EDIT.\npackage databricks\n\nimport \"errors\"\n\ntype Permission int\n\nconst (\n    Inv"
  },
  {
    "path": "pkg/analyzer/analyzers/databricks/permissions.yaml",
    "chars": 40,
    "preview": "permissions:\n  - CAN_MANAGE\n  - CAN_USE\n"
  },
  {
    "path": "pkg/analyzer/analyzers/databricks/requests.go",
    "chars": 8011,
    "preview": "package databricks\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"time\"\n\n\t\"github.com/truffl"
  },
  {
    "path": "pkg/analyzer/analyzers/databricks/result_output.json",
    "chars": 3398,
    "preview": "{\n    \"AnalyzerType\": 41,\n    \"Bindings\": [\n        {\n            \"Resource\": {\n                \"Name\": \"admins\",\n      "
  },
  {
    "path": "pkg/analyzer/analyzers/datadog/datadog.go",
    "chars": 8227,
    "preview": "//go:generate generate_permissions permissions.yaml permissions.go datadog\npackage datadog\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\""
  },
  {
    "path": "pkg/analyzer/analyzers/datadog/datadog_test.go",
    "chars": 6903,
    "preview": "package datadog\n\nimport (\n\t_ \"embed\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"sort\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/trufflesecurity/tr"
  },
  {
    "path": "pkg/analyzer/analyzers/datadog/expected_output.json",
    "chars": 27116,
    "preview": "{\n  \"AnalyzerType\": 37,\n  \"Bindings\": [\n    {\n      \"Resource\": {\n        \"Name\": \"My Monitor\",\n        \"FullyQualifiedN"
  },
  {
    "path": "pkg/analyzer/analyzers/datadog/expected_output_apikey.json",
    "chars": 1689,
    "preview": "{\n    \"AnalyzerType\": 37,\n    \"Bindings\": [\n        {\n            \"Resource\": {\n                \"Name\": \"Unknown User\",\n"
  },
  {
    "path": "pkg/analyzer/analyzers/datadog/models.go",
    "chars": 1940,
    "preview": "package datadog\n\nimport \"sync\"\n\n// Resource type constants for consistent usage\nconst (\n\tResourceTypeValidate    = \"Vali"
  },
  {
    "path": "pkg/analyzer/analyzers/datadog/permissions.yaml",
    "chars": 1742,
    "preview": "permissions:\n  - dashboards_read\n  - dashboards_write\n  - dashboards_public_share\n  - monitors_read\n  - monitors_write\n "
  },
  {
    "path": "pkg/analyzer/analyzers/datadog/requests.go",
    "chars": 12375,
    "preview": "package datadog\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"slices\""
  },
  {
    "path": "pkg/analyzer/analyzers/datadog/scopes.json",
    "chars": 25291,
    "preview": "[\n  {\n    \"name\": \"dashboards_read\",\n    \"title\": \"Dashboards Read\",\n    \"description\": \"View dashboards.\",\n    \"resourc"
  },
  {
    "path": "pkg/analyzer/analyzers/digitalocean/digitalocean.go",
    "chars": 6748,
    "preview": "//go:generate generate_permissions permissions.yaml permissions.go digitalocean\n\npackage digitalocean\n\nimport (\n\t\"bytes\""
  },
  {
    "path": "pkg/analyzer/analyzers/digitalocean/digitalocean_test.go",
    "chars": 2915,
    "preview": "package digitalocean\n\nimport (\n\t_ \"embed\"\n\t\"encoding/json\"\n\t\"sort\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/trufflesecurity/truf"
  },
  {
    "path": "pkg/analyzer/analyzers/digitalocean/expected_output.json",
    "chars": 7358,
    "preview": "{\"AnalyzerType\":26,\"Bindings\":[{\"Resource\":{\"Name\":\"sevoma\",\"FullyQualifiedName\":\"f87d96c58bcc938176acebb04ac9450bbe113c"
  },
  {
    "path": "pkg/analyzer/analyzers/digitalocean/permissions.go",
    "chars": 18998,
    "preview": "// Code generated by go generate; DO NOT EDIT.\npackage digitalocean\n\nimport \"errors\"\n\ntype Permission int\n\nconst (\n    I"
  },
  {
    "path": "pkg/analyzer/analyzers/digitalocean/permissions.yaml",
    "chars": 2029,
    "preview": "permissions:\n  - one_click:read\n  - one_click:create\n  - action:read\n  - app:read\n  - app:create\n  - app:update\n  - app:"
  },
  {
    "path": "pkg/analyzer/analyzers/digitalocean/scopes.json",
    "chars": 26406,
    "preview": "[\n    {\n        \"name\": \"one_click:read\",\n        \"test\": {\n            \"endpoint\": \"https://api.digitalocean.com/v2/1-c"
  },
  {
    "path": "pkg/analyzer/analyzers/dockerhub/dockerhub.go",
    "chars": 5394,
    "preview": "//go:generate generate_permissions permissions.yaml permissions.go dockerhub\npackage dockerhub\n\nimport (\n\t\"errors\"\n\t\"os\""
  },
  {
    "path": "pkg/analyzer/analyzers/dockerhub/dockerhub_test.go",
    "chars": 2494,
    "preview": "package dockerhub\n\nimport (\n\t_ \"embed\"\n\t\"encoding/json\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/trufflesecurity/trufflehog/v3/p"
  },
  {
    "path": "pkg/analyzer/analyzers/dockerhub/helper.go",
    "chars": 3976,
    "preview": "package dockerhub\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"sort\"\n\t\"time\"\n\n\t\"github.com/golang-jwt/jwt/v5\"\n)\n\n// permission hierarchy"
  },
  {
    "path": "pkg/analyzer/analyzers/dockerhub/permissions.go",
    "chars": 1902,
    "preview": "// Code generated by go generate; DO NOT EDIT.\npackage dockerhub\n\nimport \"errors\"\n\ntype Permission int\n\nconst (\n    Inva"
  },
  {
    "path": "pkg/analyzer/analyzers/dockerhub/permissions.yaml",
    "chars": 70,
    "preview": "permissions:\n- repo:read\n- repo:write\n- repo:admin\n- repo:public_read\n"
  },
  {
    "path": "pkg/analyzer/analyzers/dockerhub/requests.go",
    "chars": 3230,
    "preview": "package dockerhub\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"strings\"\n)\n\n// LoginResponse is the su"
  },
  {
    "path": "pkg/analyzer/analyzers/dockerhub/result_output.json",
    "chars": 1161,
    "preview": "{\n    \"AnalyzerType\": 4,\n    \"Bindings\": [\n        {\n            \"Resource\": {\n                \"Name\": \"test-private\",\n "
  },
  {
    "path": "pkg/analyzer/analyzers/dropbox/dropbox.go",
    "chars": 9973,
    "preview": "//go:generate generate_permissions permissions.yaml permissions.go dropbox\npackage dropbox\n\nimport (\n\t\"encoding/json\"\n\t\""
  },
  {
    "path": "pkg/analyzer/analyzers/dropbox/dropbox_test.go",
    "chars": 1942,
    "preview": "package dropbox\n\nimport (\n\t_ \"embed\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/trufflesecurity/trufflehog"
  },
  {
    "path": "pkg/analyzer/analyzers/dropbox/expected_output.json",
    "chars": 4488,
    "preview": "{\"AnalyzerType\":40,\"Bindings\":[{\"Resource\":{\"Name\":\"Truffle Detectors\",\"FullyQualifiedName\":\"dbid:AACfhSAzNq2rEGFtyIKeEc"
  },
  {
    "path": "pkg/analyzer/analyzers/dropbox/models.go",
    "chars": 916,
    "preview": "package dropbox\n\ntype scopeConfig struct {\n\tScopes map[string]scope `json:\"scopes\"`\n}\n\ntype scope struct {\n\tTestEndpoint"
  },
  {
    "path": "pkg/analyzer/analyzers/dropbox/permissions.go",
    "chars": 3895,
    "preview": "// Code generated by go generate; DO NOT EDIT.\npackage dropbox\n\nimport \"errors\"\n\ntype Permission int\n\nconst (\n    Invali"
  },
  {
    "path": "pkg/analyzer/analyzers/dropbox/permissions.yaml",
    "chars": 322,
    "preview": "permissions:\r\n  - account_info.write\r\n  - account_info.read\r\n  - files.metadata.write\r\n  - files.metadata.read\r\n  - file"
  },
  {
    "path": "pkg/analyzer/analyzers/dropbox/scopes.json",
    "chars": 5468,
    "preview": "{\r\n    \"scopes\": {\r\n        \"account_info.write\": {\r\n            \"test_endpoint\": \"/2/account/set_profile_photo\",\r\n     "
  },
  {
    "path": "pkg/analyzer/analyzers/elevenlabs/elevenlabs.go",
    "chars": 12085,
    "preview": "package elevenlabs\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"os\"\n\t\"slices\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"github."
  },
  {
    "path": "pkg/analyzer/analyzers/elevenlabs/elevenlabs_test.go",
    "chars": 2901,
    "preview": "package elevenlabs\n\nimport (\n\t_ \"embed\"\n\t\"encoding/json\"\n\t\"sort\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/trufflesecurity/truffl"
  },
  {
    "path": "pkg/analyzer/analyzers/elevenlabs/permissions.go",
    "chars": 4795,
    "preview": "// Code generated by go generate; DO NOT EDIT.\npackage elevenlabs\n\nimport \"errors\"\n\ntype Permission int\n\nconst (\n    Inv"
  },
  {
    "path": "pkg/analyzer/analyzers/elevenlabs/permissions.yaml",
    "chars": 496,
    "preview": "permissions:\n  - text_to_speech\n  - speech_to_speech\n  # - sound_generation\n  - audio_isolation\n  # - voice_generation\n "
  },
  {
    "path": "pkg/analyzer/analyzers/elevenlabs/requests.go",
    "chars": 27641,
    "preview": "package elevenlabs\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"mime/multipart\"\n\t\"net/http\"\n\t\"slices\"\n\t\""
  },
  {
    "path": "pkg/analyzer/analyzers/elevenlabs/result_output.json",
    "chars": 13468,
    "preview": "{\n    \"AnalyzerType\": 6,\n    \"Bindings\": [\n        {\n            \"Resource\": {\n                \"Name\": \"Ahmed\",\n        "
  },
  {
    "path": "pkg/analyzer/analyzers/fastly/fastly.go",
    "chars": 5019,
    "preview": "//go:generate generate_permissions permissions.yaml permissions.go fastly\npackage fastly\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\n\t\"githu"
  },
  {
    "path": "pkg/analyzer/analyzers/fastly/fastly_test.go",
    "chars": 2954,
    "preview": "package fastly\n\nimport (\n\t_ \"embed\"\n\t\"encoding/json\"\n\t\"sort\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/trufflesecurity/trufflehog"
  },
  {
    "path": "pkg/analyzer/analyzers/fastly/models.go",
    "chars": 5763,
    "preview": "package fastly\n\nimport \"sync\"\n\nconst (\n\t// types\n\tTypeUserToken             string = \"User Token\"\n\tTypeAutomationToken  "
  },
  {
    "path": "pkg/analyzer/analyzers/fastly/permissions.go",
    "chars": 1860,
    "preview": "// Code generated by go generate; DO NOT EDIT.\npackage fastly\n\nimport \"errors\"\n\ntype Permission int\n\nconst (\n    Invalid"
  },
  {
    "path": "pkg/analyzer/analyzers/fastly/permissions.yaml",
    "chars": 71,
    "preview": "permissions:\n  - global\n  - global:read\n  - purge_all\n  - purge_select\n"
  },
  {
    "path": "pkg/analyzer/analyzers/fastly/requests.go",
    "chars": 20427,
    "preview": "package fastly\n\nimport (\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"strconv\"\n\t\"sync\"\n)\n\ntype endpoint int\n\nco"
  },
  {
    "path": "pkg/analyzer/analyzers/fastly/result_output.json",
    "chars": 10167,
    "preview": "{\n    \"AnalyzerType\": 34,\n    \"Bindings\": [\n        {\n            \"Resource\": {\n                \"Name\": \"test\",\n        "
  },
  {
    "path": "pkg/analyzer/analyzers/figma/endpoints.json",
    "chars": 1133,
    "preview": "{\r\n    \"files:read\": {\r\n        \"url\": \"https://api.figma.com/v1/me\",\r\n        \"method\": \"GET\",\r\n        \"expected_statu"
  },
  {
    "path": "pkg/analyzer/analyzers/figma/expected_output.json",
    "chars": 448,
    "preview": "{\"AnalyzerType\":32,\"Bindings\":[{\"Resource\":{\"Name\":\"Source Integration\",\"FullyQualifiedName\":\"1287160752716166666\",\"Type"
  },
  {
    "path": "pkg/analyzer/analyzers/figma/figma.go",
    "chars": 6500,
    "preview": "//go:generate generate_permissions permissions.yaml permissions.go figma\n\npackage figma\n\nimport (\n\t_ \"embed\"\n\t\"encoding/"
  },
  {
    "path": "pkg/analyzer/analyzers/figma/figma_test.go",
    "chars": 2921,
    "preview": "package figma\n\nimport (\n\t_ \"embed\"\n\t\"encoding/json\"\n\t\"sort\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/trufflesecurity/trufflehog/"
  },
  {
    "path": "pkg/analyzer/analyzers/figma/models.go",
    "chars": 535,
    "preview": "package figma\n\ntype userInfo struct {\n\tID     string `json:\"id\"`\n\tHandle string `json:\"handle\"`\n\tImgURL string `json:\"im"
  },
  {
    "path": "pkg/analyzer/analyzers/figma/permissions.go",
    "chars": 2893,
    "preview": "// Code generated by go generate; DO NOT EDIT.\npackage figma\n\nimport \"errors\"\n\ntype Permission int\n\nconst (\n    Invalid "
  },
  {
    "path": "pkg/analyzer/analyzers/figma/permissions.yaml",
    "chars": 213,
    "preview": "permissions:\r\n  - files:read\r\n  - file_variables:read\r\n  - file_variables:write\r\n  - file_comments:write\r\n  - file_dev_r"
  },
  {
    "path": "pkg/analyzer/analyzers/figma/requests.go",
    "chars": 371,
    "preview": "package figma\n\nimport (\n\t\"net/http\"\n)\n\nfunc callAPIEndpoint(client *http.Client, token string, endpoint endpoint) (*http"
  },
  {
    "path": "pkg/analyzer/analyzers/figma/scopes.go",
    "chars": 3267,
    "preview": "package figma\n\nimport (\n\t_ \"embed\"\n\t\"encoding/json\"\n\t\"errors\"\n)\n\ntype Scope string\n\nconst (\n\tScopeFilesRead             "
  },
  {
    "path": "pkg/analyzer/analyzers/github/classic/classic.yaml",
    "chars": 890,
    "preview": "permissions:\n  - repo\n  - repo:status\n  - repo_deployment\n  - public_repo\n  - repo:invite\n  - security_events\n  - workfl"
  },
  {
    "path": "pkg/analyzer/analyzers/github/classic/classic_permissions.go",
    "chars": 9230,
    "preview": "// Code generated by go generate; DO NOT EDIT.\npackage classic\n\nimport \"errors\"\n\ntype Permission int\n\nconst (\n    Invali"
  },
  {
    "path": "pkg/analyzer/analyzers/github/classic/classictoken.go",
    "chars": 9135,
    "preview": "//go:generate generate_permissions classic.yaml classic_permissions.go classic\n\npackage classic\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t"
  },
  {
    "path": "pkg/analyzer/analyzers/github/common/github.go",
    "chars": 5949,
    "preview": "package common\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/fatih/color\"\n\tgh \"github.com/google/go"
  },
  {
    "path": "pkg/analyzer/analyzers/github/finegrained/finegrained.go",
    "chars": 44768,
    "preview": "//go:generate generate_permissions finegrained.yaml finegrained_permissions.go finegrained\n\npackage finegrained\n\nimport "
  },
  {
    "path": "pkg/analyzer/analyzers/github/finegrained/finegrained.yaml",
    "chars": 2044,
    "preview": "# Please generate a yaml list of all of the strings permission_name:access_level for all of the permissions and access l"
  },
  {
    "path": "pkg/analyzer/analyzers/github/finegrained/finegrained_permissions.go",
    "chars": 16132,
    "preview": "// Code generated by go generate; DO NOT EDIT.\npackage finegrained\n\nimport \"errors\"\n\ntype Permission int\n\nconst (\n    In"
  },
  {
    "path": "pkg/analyzer/analyzers/github/finegrained/finegrained_test.go",
    "chars": 1542,
    "preview": "package finegrained\n\nimport (\n\t\"testing\"\n\t\"time\"\n\n\tgh \"github.com/google/go-github/v67/github\"\n\n\t\"github.com/trufflesecu"
  },
  {
    "path": "pkg/analyzer/analyzers/github/github.go",
    "chars": 6640,
    "preview": "package github\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/fatih/color\"\n\tgh \"github.com/google/go-github/v67/githu"
  },
  {
    "path": "pkg/analyzer/analyzers/github/github_test.go",
    "chars": 11335,
    "preview": "package github\n\nimport (\n\t\"encoding/json\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/google/go-cmp/cmp\"\n\t\"github.com/trufflesecuri"
  },
  {
    "path": "pkg/analyzer/analyzers/gitlab/expected_output.json",
    "chars": 973,
    "preview": "{\"AnalyzerType\":5,\"Bindings\":[{\"Resource\":{\"Name\":\"gitlab.com/user/22466472\",\"FullyQualifiedName\":\"gitlab.com/user/22466"
  },
  {
    "path": "pkg/analyzer/analyzers/gitlab/gitlab.go",
    "chars": 9893,
    "preview": "//go:generate generate_permissions permissions.yaml permissions.go gitlab\n\npackage gitlab\n\nimport (\n\t\"bytes\"\n\t\"encoding/"
  },
  {
    "path": "pkg/analyzer/analyzers/gitlab/gitlab_test.go",
    "chars": 2074,
    "preview": "package gitlab\n\nimport (\n\t_ \"embed\"\n\t\"encoding/json\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/trufflesecurity/trufflehog/v3/pkg/"
  },
  {
    "path": "pkg/analyzer/analyzers/gitlab/permissions.go",
    "chars": 3409,
    "preview": "// Code generated by go generate; DO NOT EDIT.\npackage gitlab\n\nimport \"errors\"\n\ntype Permission int\n\nconst (\n    Invalid"
  },
  {
    "path": "pkg/analyzer/analyzers/gitlab/permissions.yaml",
    "chars": 238,
    "preview": "permissions:\n  - api\n  - read_user\n  - read_api\n  - read_repository\n  - write_repository\n  - read_registry\n  - write_reg"
  },
  {
    "path": "pkg/analyzer/analyzers/gitlab/scopes.go",
    "chars": 2379,
    "preview": "package gitlab\n\nvar gitlab_scopes = map[string]string{\n\t\"api\":               \"Grants complete read/write access to the A"
  },
  {
    "path": "pkg/analyzer/analyzers/groq/groq.go",
    "chars": 4098,
    "preview": "//go:generate generate_permissions permissions.yaml permissions.go groq\npackage groq\n\nimport (\n\t\"errors\"\n\t\"os\"\n\n\t\"github"
  },
  {
    "path": "pkg/analyzer/analyzers/groq/groq_test.go",
    "chars": 1937,
    "preview": "package groq\n\nimport (\n\t_ \"embed\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/trufflesecurity/trufflehog/v3"
  },
  {
    "path": "pkg/analyzer/analyzers/groq/permissions.go",
    "chars": 1448,
    "preview": "// Code generated by go generate; DO NOT EDIT.\npackage groq\n\nimport \"errors\"\n\ntype Permission int\n\nconst (\n    Invalid P"
  },
  {
    "path": "pkg/analyzer/analyzers/groq/permissions.yaml",
    "chars": 71,
    "preview": "permissions:\n  - full_access # by default groq api key has full access\n"
  },
  {
    "path": "pkg/analyzer/analyzers/groq/requests.go",
    "chars": 4741,
    "preview": "package groq\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"time\"\n)\n\nvar (\n\tpermissionErr       = \"permissions_er"
  },
  {
    "path": "pkg/analyzer/analyzers/huggingface/huggingface.go",
    "chars": 19067,
    "preview": "//go:generate generate_permissions permissions.yaml permissions.go huggingface\n\npackage huggingface\n\nimport (\n\t\"encoding"
  },
  {
    "path": "pkg/analyzer/analyzers/huggingface/huggingface_test.go",
    "chars": 3152,
    "preview": "package huggingface\n\nimport (\n\t\"encoding/json\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/trufflesecurity/trufflehog/v3/pkg/analyz"
  },
  {
    "path": "pkg/analyzer/analyzers/huggingface/permissions.go",
    "chars": 1523,
    "preview": "// Code generated by go generate; DO NOT EDIT.\npackage huggingface\n\nimport \"errors\"\n\ntype Permission int\n\nconst (\n    In"
  },
  {
    "path": "pkg/analyzer/analyzers/huggingface/permissions.yaml",
    "chars": 29,
    "preview": "permissions:\n - read\n - write"
  },
  {
    "path": "pkg/analyzer/analyzers/huggingface/scopes.go",
    "chars": 2589,
    "preview": "package huggingface\n\n//nolint:unused\nvar repo_scopes = map[string]string{\n\t\"repo.content.read\": \"Read access to contents"
  },
  {
    "path": "pkg/analyzer/analyzers/jira/jira.go",
    "chars": 5564,
    "preview": "//go:generate generate_permissions permissions.yaml permissions.go jira\n\npackage jira\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n"
  },
  {
    "path": "pkg/analyzer/analyzers/jira/jira_test.go",
    "chars": 3459,
    "preview": "package jira\n\nimport (\n\t_ \"embed\"\n\t\"encoding/json\"\n\t\"sort\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/trufflesecurity/trufflehog/v"
  },
  {
    "path": "pkg/analyzer/analyzers/jira/models.go",
    "chars": 5671,
    "preview": "package jira\n\nimport (\n\t\"sync\"\n)\n\nconst (\n\tResourceTypeProject     = \"Project\"\n\tResourceTypeBoard       = \"Board\"\n\tResou"
  },
  {
    "path": "pkg/analyzer/analyzers/jira/permissions.go",
    "chars": 9486,
    "preview": "// Code generated by go generate; DO NOT EDIT.\npackage jira\n\nimport \"errors\"\n\ntype Permission int\n\nconst (\n    Invalid P"
  },
  {
    "path": "pkg/analyzer/analyzers/jira/permissions.yaml",
    "chars": 955,
    "preview": "permissions:\n  - add_comments\n  - administer\n  - administer_projects\n  - assignable_user\n  - assign_issues\n  - browse_pr"
  },
  {
    "path": "pkg/analyzer/analyzers/jira/requests.go",
    "chars": 12206,
    "preview": "package jira\n\nimport (\n\t\"encoding/base64\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"strconv\"\n\t\"st"
  },
  {
    "path": "pkg/analyzer/analyzers/jira/result_output.json",
    "chars": 283176,
    "preview": "{\n    \"AnalyzerType\": 42,\n    \"Bindings\": [\n      {\n        \"Resource\": {\n          \"Name\": \"Custom field created\",\n    "
  },
  {
    "path": "pkg/analyzer/analyzers/launchdarkly/launchdarkly.go",
    "chars": 7078,
    "preview": "//go:generate generate_permissions permissions.yaml permissions.go launchdarkly\npackage launchdarkly\n\nimport (\n\t\"errors\""
  },
  {
    "path": "pkg/analyzer/analyzers/launchdarkly/launchdarkly_test.go",
    "chars": 2903,
    "preview": "package launchdarkly\n\nimport (\n\t_ \"embed\"\n\t\"encoding/json\"\n\t\"sort\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/trufflesecurity/truf"
  },
  {
    "path": "pkg/analyzer/analyzers/launchdarkly/models.go",
    "chars": 2846,
    "preview": "package launchdarkly\n\nimport \"sync\"\n\nvar (\n\tMetadataKey = \"key\"\n\n\t// resource types\n\tapplicationKey  = \"Application\"\n\tre"
  },
  {
    "path": "pkg/analyzer/analyzers/launchdarkly/permissions.go",
    "chars": 1972,
    "preview": "// Code generated by go generate; DO NOT EDIT.\npackage launchdarkly\n\nimport \"errors\"\n\ntype Permission int\n\nconst (\n    I"
  },
  {
    "path": "pkg/analyzer/analyzers/launchdarkly/permissions.yaml",
    "chars": 77,
    "preview": "permissions:\n  - admin\n  - writer\n  - reader\n  - inlinepolicy\n  - customroles"
  },
  {
    "path": "pkg/analyzer/analyzers/launchdarkly/requests.go",
    "chars": 20344,
    "preview": "package launchdarkly\n\nimport (\n\t\"context\"\n\t_ \"embed\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"strconv\"\n\t\"sy"
  },
  {
    "path": "pkg/analyzer/analyzers/launchdarkly/result_output.json",
    "chars": 3370,
    "preview": "{\n    \"AnalyzerType\": 31,\n    \"Bindings\": [\n        {\n            \"Resource\": {\n                \"Name\": \"Production\",\n  "
  },
  {
    "path": "pkg/analyzer/analyzers/launchdarkly/user.go",
    "chars": 7294,
    "preview": "/*\nuser.go file is all related to calling APIs to get user and token information and formatting them to secretInfo User."
  },
  {
    "path": "pkg/analyzer/analyzers/mailchimp/expected_output.json",
    "chars": 29594,
    "preview": "{\"AnalyzerType\":7,\"Bindings\":[{\"Resource\":{\"Name\":\"TruffleHog\",\"FullyQualifiedName\":\"mailchimp.com/account/09f02f6ec9b78"
  },
  {
    "path": "pkg/analyzer/analyzers/mailchimp/mailchimp.go",
    "chars": 7693,
    "preview": "//go:generate generate_permissions permissions.yaml permissions.go mailchimp\npackage mailchimp\n\nimport (\n\t\"encoding/json"
  },
  {
    "path": "pkg/analyzer/analyzers/mailchimp/mailchimp_test.go",
    "chars": 2929,
    "preview": "package mailchimp\n\nimport (\n\t_ \"embed\"\n\t\"encoding/json\"\n\t\"sort\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/trufflesecurity/truffle"
  },
  {
    "path": "pkg/analyzer/analyzers/mailchimp/permissions.go",
    "chars": 14792,
    "preview": "// Code generated by go generate; DO NOT EDIT.\npackage mailchimp\n\nimport \"errors\"\n\ntype Permission int\n\nconst (\n    Inva"
  },
  {
    "path": "pkg/analyzer/analyzers/mailchimp/permissions.yaml",
    "chars": 1612,
    "preview": "permissions:\n  - invite_users\n  - revoke_account_access\n  - set_user_access_level\n  - require_2_factor_authentication\n  "
  },
  {
    "path": "pkg/analyzer/analyzers/mailgun/expected_output.json",
    "chars": 710,
    "preview": "{\n   \"AnalyzerType\": 8,\n   \"Bindings\": [\n      {\n         \"Resource\": {\n            \"Name\": \"sandbox19e49763d44e498e8505"
  },
  {
    "path": "pkg/analyzer/analyzers/mailgun/mailgun.go",
    "chars": 3819,
    "preview": "//go:generate generate_permissions permissions.yaml permissions.go mailgun\npackage mailgun\n\nimport (\n\t\"errors\"\n\t\"os\"\n\t\"s"
  },
  {
    "path": "pkg/analyzer/analyzers/mailgun/mailgun_test.go",
    "chars": 2894,
    "preview": "package mailgun\n\nimport (\n\t_ \"embed\"\n\t\"encoding/json\"\n\t\"sort\"\n\t\"testing\"\n\t\"time\"\n\n\t\"github.com/trufflesecurity/truffleho"
  },
  {
    "path": "pkg/analyzer/analyzers/mailgun/permissions.go",
    "chars": 1668,
    "preview": "// Code generated by go generate; DO NOT EDIT.\npackage mailgun\n\nimport \"errors\"\n\ntype Permission int\n\nconst (\n    Invali"
  },
  {
    "path": "pkg/analyzer/analyzers/mailgun/permissions.yaml",
    "chars": 48,
    "preview": "permissions:\n  - read\n  - write\n  - full_access\n"
  }
]

// ... and 3157 more files (download for full content)

About this extraction

This page contains the full source code of the trufflesecurity/trufflehog GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3357 files (15.6 MB), approximately 4.1M tokens, and a symbol index with 17440 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!