### Go ###
# Binaries for programs and plugins
*.exe
*.exe~
*.dll
*.so
*.dylib

# Test binary, built with `go test -c`
*.test

# Output of the go coverage tool, specifically when used with LiteIDE
*.out

# Crash log files
crash.log

### macOS ###
.DS_Store
.idea

### Discovery Project ###
private
internal/**/go.sum
cmd/*/*.yaml
experiment.yaml

#### GKE
go-discovery*.json

#### App Engine
*credentials.json
*credentials.yaml

#### Loadtest Related Files ####
results.bin

#### Screentest Failure Output ####
tests/screentest/output

#### VS Code Debugger Files ####
.vscode
__debug_bin

#### NPM ####
node_modules

#### E2E Test Output ####
__diff_output__

#### Cloud Build Artifacts ####
_BUILD_TAG
_ID_TOKEN
