From f0797d0e45812864c2ede566a2ea926de70c6af5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Jul 2023 14:49:38 +0000 Subject: [PATCH 001/125] :seedling: Bump github.com/goreleaser/goreleaser in /tools (#3238) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [github.com/goreleaser/goreleaser](https://github.com/goreleaser/goreleaser) from 1.18.2 to 1.19.1. - [Release notes](https://github.com/goreleaser/goreleaser/releases) - [Changelog](https://github.com/goreleaser/goreleaser/blob/main/.goreleaser.yaml) - [Commits](https://github.com/goreleaser/goreleaser/compare/v1.18.2...v1.19.1) --- updated-dependencies: - dependency-name: github.com/goreleaser/goreleaser dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: André Backman --- tools/go.mod | 131 ++++---- tools/go.sum | 834 +++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 683 insertions(+), 282 deletions(-) diff --git a/tools/go.mod b/tools/go.mod index fecbda84a3c..00e19ef35c3 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -7,7 +7,7 @@ require ( github.com/golangci/golangci-lint v1.52.2 github.com/google/addlicense v1.1.1 github.com/google/ko v0.14.1 - github.com/goreleaser/goreleaser v1.18.2 + github.com/goreleaser/goreleaser v1.19.1 github.com/naveensrinivasan/stunning-tribble v0.4.2 github.com/onsi/ginkgo/v2 v2.11.0 google.golang.org/protobuf v1.31.0 @@ -16,74 +16,74 @@ require ( require ( 4d63.com/gocheckcompilerdirectives v1.2.1 // indirect 4d63.com/gochecknoglobals v0.2.1 // indirect - cloud.google.com/go v0.110.0 // indirect - cloud.google.com/go/compute v1.19.1 // indirect + cloud.google.com/go v0.110.2 // indirect + cloud.google.com/go/compute v1.20.0 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v0.13.0 // indirect - cloud.google.com/go/kms v1.10.2 // indirect - cloud.google.com/go/storage v1.29.0 // indirect + cloud.google.com/go/iam v1.1.0 // indirect + cloud.google.com/go/kms v1.12.0 // indirect + cloud.google.com/go/storage v1.30.1 // indirect code.gitea.io/sdk/gitea v0.15.1 // indirect github.com/Abirdcfly/dupword v0.0.11 // indirect github.com/AlekSi/pointer v1.2.0 // indirect github.com/Antonboom/errname v0.1.9 // indirect github.com/Antonboom/nilnil v0.1.3 // indirect github.com/Azure/azure-sdk-for-go v68.0.0+incompatible // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.3.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.2 // indirect - github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.9.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0 // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest v0.11.29 // indirect - github.com/Azure/go-autorest/autorest/adal v0.9.22 // indirect + github.com/Azure/go-autorest/autorest/adal v0.9.23 // indirect github.com/Azure/go-autorest/autorest/azure/auth v0.5.12 // indirect github.com/Azure/go-autorest/autorest/azure/cli v0.4.6 // indirect github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect github.com/Azure/go-autorest/logger v0.2.1 // indirect github.com/Azure/go-autorest/tracing v0.6.0 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v0.8.1 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 // indirect github.com/BurntSushi/toml v1.2.1 // indirect github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver v1.5.0 // indirect github.com/Masterminds/semver/v3 v3.2.1 // indirect - github.com/Masterminds/sprig v2.22.0+incompatible // indirect + github.com/Masterminds/sprig/v3 v3.2.3 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/OpenPeeDeeP/depguard v1.1.1 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 // indirect - github.com/acomagu/bufpipe v1.0.3 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20230626094100-7e9e0395ebec // indirect + github.com/acomagu/bufpipe v1.0.4 // indirect github.com/alessio/shellescape v1.4.1 // indirect github.com/alexkohler/prealloc v1.0.0 // indirect github.com/alingse/asasalint v0.0.11 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/ashanbrown/forbidigo v1.5.1 // indirect github.com/ashanbrown/makezero v1.1.1 // indirect - github.com/atc0005/go-teams-notify/v2 v2.7.0 // indirect - github.com/aws/aws-sdk-go v1.44.259 // indirect - github.com/aws/aws-sdk-go-v2 v1.18.0 // indirect + github.com/atc0005/go-teams-notify/v2 v2.7.1 // indirect + github.com/aws/aws-sdk-go v1.44.284 // indirect + github.com/aws/aws-sdk-go-v2 v1.18.1 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10 // indirect - github.com/aws/aws-sdk-go-v2/config v1.18.23 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.13.22 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.3 // indirect - github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.51 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.3.34 // indirect - github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.19 // indirect + github.com/aws/aws-sdk-go-v2/config v1.18.27 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.13.26 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.4 // indirect + github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.70 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.34 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.28 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.3.35 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.26 // indirect github.com/aws/aws-sdk-go-v2/service/ecr v1.17.12 // indirect github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.13.12 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.23 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.27 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.22 // indirect - github.com/aws/aws-sdk-go-v2/service/kms v1.21.1 // indirect - github.com/aws/aws-sdk-go-v2/service/s3 v1.30.2 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.12.10 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.10 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.18.11 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.29 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.28 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.3 // indirect + github.com/aws/aws-sdk-go-v2/service/kms v1.22.2 // indirect + github.com/aws/aws-sdk-go-v2/service/s3 v1.35.0 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.12.12 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.12 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.19.2 // indirect github.com/aws/smithy-go v1.13.5 // indirect github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20220802171026-617dc7abb2ea // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect @@ -97,11 +97,11 @@ require ( github.com/breml/errchkjson v0.3.1 // indirect github.com/butuzov/ireturn v0.1.1 // indirect github.com/caarlos0/ctrlc v1.2.0 // indirect - github.com/caarlos0/env/v8 v8.0.0 // indirect + github.com/caarlos0/env/v9 v9.0.0 // indirect github.com/caarlos0/go-reddit/v3 v3.0.1 // indirect github.com/caarlos0/go-shellwords v1.0.12 // indirect github.com/caarlos0/go-version v0.1.1 // indirect - github.com/caarlos0/log v0.4.1 // indirect + github.com/caarlos0/log v0.4.2 // indirect github.com/cavaliergopher/cpio v1.0.1 // indirect github.com/cenkalti/backoff/v4 v4.2.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect @@ -120,8 +120,8 @@ require ( github.com/dghubble/oauth1 v0.7.2 // indirect github.com/dghubble/sling v1.4.0 // indirect github.com/dimchansky/utfbom v1.1.1 // indirect - github.com/disgoorg/disgo v0.16.3 // indirect - github.com/disgoorg/json v1.0.0 // indirect + github.com/disgoorg/disgo v0.16.7 // indirect + github.com/disgoorg/json v1.1.0 // indirect github.com/disgoorg/log v1.2.0 // indirect github.com/disgoorg/snowflake/v2 v2.0.1 // indirect github.com/docker/cli v23.0.5+incompatible // indirect @@ -142,14 +142,14 @@ require ( github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/fzipp/gocyclo v0.6.0 // indirect github.com/go-critic/go-critic v0.7.0 // indirect - github.com/go-git/gcfg v1.5.0 // indirect - github.com/go-git/go-billy/v5 v5.3.1 // indirect - github.com/go-git/go-git/v5 v5.4.2 // indirect + github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect + github.com/go-git/go-billy/v5 v5.4.1 // indirect + github.com/go-git/go-git/v5 v5.7.0 // indirect github.com/go-logr/logr v1.2.4 // indirect github.com/go-openapi/analysis v0.21.4 // indirect github.com/go-openapi/errors v0.20.3 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect - github.com/go-openapi/jsonreference v0.20.1 // indirect + github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/loads v0.21.2 // indirect github.com/go-openapi/runtime v0.26.0 // indirect github.com/go-openapi/spec v0.20.9 // indirect @@ -183,19 +183,19 @@ require ( github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 // indirect github.com/google/go-cmp v0.5.9 // indirect github.com/google/go-containerregistry v0.15.2 // indirect - github.com/google/go-github/v50 v50.2.0 // indirect + github.com/google/go-github/v53 v53.2.0 // indirect github.com/google/go-querystring v1.1.0 // indirect - github.com/google/pprof v0.0.0-20230111200839-76d1ae5aea2b // indirect - github.com/google/s2a-go v0.1.3 // indirect + github.com/google/pprof v0.0.0-20230406165453-00490a63f317 // indirect + github.com/google/s2a-go v0.1.4 // indirect github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2 // indirect github.com/google/uuid v1.3.0 // indirect github.com/google/wire v0.5.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect - github.com/googleapis/gax-go/v2 v2.8.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect + github.com/googleapis/gax-go/v2 v2.11.0 // indirect github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28 // indirect - github.com/goreleaser/chglog v0.4.2 // indirect + github.com/goreleaser/chglog v0.5.0 // indirect github.com/goreleaser/fileglob v1.3.0 // indirect - github.com/goreleaser/nfpm/v2 v2.29.0 // indirect + github.com/goreleaser/nfpm/v2 v2.31.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/gostaticanalysis/analysisutil v0.7.1 // indirect github.com/gostaticanalysis/comment v1.4.2 // indirect @@ -208,9 +208,9 @@ require ( github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hexops/gotextdiff v1.0.3 // indirect - github.com/huandu/xstrings v1.3.2 // indirect + github.com/huandu/xstrings v1.3.3 // indirect github.com/iancoleman/orderedmap v0.2.0 // indirect - github.com/imdario/mergo v0.3.15 // indirect + github.com/imdario/mergo v0.3.16 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/invopop/jsonschema v0.7.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect @@ -225,7 +225,7 @@ require ( github.com/kisielk/errcheck v1.6.3 // indirect github.com/kisielk/gotool v1.0.0 // indirect github.com/kkHAIKE/contextcheck v1.1.4 // indirect - github.com/klauspost/compress v1.16.5 // indirect + github.com/klauspost/compress v1.16.6 // indirect github.com/klauspost/pgzip v1.2.6 // indirect github.com/kulti/thelper v0.6.3 // indirect github.com/kunwardeep/paralleltest v1.0.6 // indirect @@ -243,7 +243,7 @@ require ( github.com/maratori/testpackage v1.1.1 // indirect github.com/matoous/godox v0.0.0-20230222163458-006bad1f9d26 // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.17 // indirect + github.com/mattn/go-isatty v0.0.18 // indirect github.com/mattn/go-mastodon v0.0.6 // indirect github.com/mattn/go-runewidth v0.0.14 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect @@ -259,7 +259,7 @@ require ( github.com/muesli/mango-pflag v0.1.0 // indirect github.com/muesli/reflow v0.3.0 // indirect github.com/muesli/roff v0.1.0 // indirect - github.com/muesli/termenv v0.15.1 // indirect + github.com/muesli/termenv v0.15.2 // indirect github.com/nakabonne/nestif v0.3.1 // indirect github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 // indirect github.com/nishanths/exhaustive v0.9.5 // indirect @@ -271,6 +271,7 @@ require ( github.com/opencontainers/image-spec v1.1.0-rc3 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.0.8 // indirect + github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect @@ -294,6 +295,7 @@ require ( github.com/securego/gosec/v2 v2.15.0 // indirect github.com/sergi/go-diff v1.2.0 // indirect github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect + github.com/shopspring/decimal v1.2.0 // indirect github.com/sigstore/cosign/v2 v2.0.3-0.20230523133326-0544abd8fc8a // indirect github.com/sigstore/rekor v1.2.0 // indirect github.com/sigstore/sigstore v1.6.4 // indirect @@ -301,6 +303,7 @@ require ( github.com/sivchari/containedctx v1.0.2 // indirect github.com/sivchari/nosnakecase v1.7.0 // indirect github.com/sivchari/tenv v1.7.1 // indirect + github.com/skeema/knownhosts v1.1.1 // indirect github.com/slack-go/slack v0.12.2 // indirect github.com/sonatard/noctx v0.0.2 // indirect github.com/sourcegraph/go-diff v0.7.0 // indirect @@ -313,7 +316,7 @@ require ( github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect github.com/stretchr/objx v0.5.0 // indirect - github.com/stretchr/testify v1.8.3 // indirect + github.com/stretchr/testify v1.8.4 // indirect github.com/subosito/gotenv v1.4.2 // indirect github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c // indirect github.com/tdakkota/asciicheck v0.2.0 // indirect @@ -332,25 +335,25 @@ require ( github.com/uudashr/gocognit v1.0.6 // indirect github.com/vbatts/tar-split v0.11.3 // indirect github.com/withfig/autocomplete-tools/integrations/cobra v1.2.1 // indirect - github.com/xanzy/go-gitlab v0.83.0 // indirect - github.com/xanzy/ssh-agent v0.3.1 // indirect + github.com/xanzy/go-gitlab v0.86.0 // indirect + github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/yagipy/maintidx v1.0.0 // indirect github.com/yeya24/promlinter v0.2.0 // indirect gitlab.com/bosi/decorder v0.2.3 // indirect gitlab.com/digitalxero/go-conventional-commit v1.0.7 // indirect go.mongodb.org/mongo-driver v1.11.3 // indirect go.opencensus.io v0.24.0 // indirect - go.uber.org/atomic v1.10.0 // indirect + go.uber.org/atomic v1.11.0 // indirect go.uber.org/automaxprocs v1.5.2 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.24.0 // indirect - gocloud.dev v0.29.0 // indirect + gocloud.dev v0.30.0 // indirect golang.org/x/crypto v0.10.0 // indirect golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect golang.org/x/exp/typeparams v0.0.0-20230224173230-c95f2b4c22f2 // indirect golang.org/x/mod v0.11.0 // indirect golang.org/x/net v0.11.0 // indirect - golang.org/x/oauth2 v0.8.0 // indirect + golang.org/x/oauth2 v0.9.0 // indirect golang.org/x/sync v0.3.0 // indirect golang.org/x/sys v0.9.0 // indirect golang.org/x/term v0.9.0 // indirect @@ -358,10 +361,12 @@ require ( golang.org/x/time v0.3.0 // indirect golang.org/x/tools v0.10.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect - google.golang.org/api v0.123.0 // indirect + google.golang.org/api v0.128.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect - google.golang.org/grpc v1.55.0 // indirect + google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc // indirect + google.golang.org/grpc v1.56.0 // indirect gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/mail.v2 v2.3.1 // indirect diff --git a/tools/go.sum b/tools/go.sum index f1d1237f868..df5239266ec 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -42,50 +42,85 @@ cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34h cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= -cloud.google.com/go v0.109.0/go.mod h1:2sYycXt75t/CSB5R9M2wPU1tJmire7AQZTPtITcGBVE= -cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys= cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= +cloud.google.com/go v0.110.2 h1:sdFPBr6xG9/wkBbfhmUz/JmZC7X6LavQgcrVINrKiVA= +cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVquxiw= cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= +cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E= cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= +cloud.google.com/go/accesscontextmanager v1.6.0/go.mod h1:8XCvZWfYw3K/ji0iVnp+6pu7huxoQTLmxAbVjbloTtM= +cloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg= +cloud.google.com/go/aiplatform v1.35.0/go.mod h1:7MFT/vCaOyZT/4IIFfxH4ErVg/4ku6lKv3w0+tFTgXQ= +cloud.google.com/go/aiplatform v1.36.1/go.mod h1:WTm12vJRPARNvJ+v6P52RDHCNe4AhvjcIZ/9/RRHy/k= +cloud.google.com/go/aiplatform v1.37.0/go.mod h1:IU2Cv29Lv9oCn/9LkFiiuKfwrRTq+QQMbW+hPCxJGZw= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/analytics v0.17.0/go.mod h1:WXFa3WSym4IZ+JiKmavYdJwGG/CvpqiqczmL59bTD9M= +cloud.google.com/go/analytics v0.18.0/go.mod h1:ZkeHGQlcIPkw0R/GW+boWHhCOR43xz9RN/jn7WcqfIE= +cloud.google.com/go/analytics v0.19.0/go.mod h1:k8liqf5/HCnOUkbawNtrWWc+UAzyDlW89doe8TtoDsE= cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc= +cloud.google.com/go/apigateway v1.5.0/go.mod h1:GpnZR3Q4rR7LVu5951qfXPJCHquZt02jf7xQx7kpqN8= cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04= +cloud.google.com/go/apigeeconnect v1.5.0/go.mod h1:KFaCqvBRU6idyhSNyn3vlHXc8VMDJdRmwDF6JyFRqZ8= +cloud.google.com/go/apigeeregistry v0.4.0/go.mod h1:EUG4PGcsZvxOXAdyEghIdXwAEi/4MEaoqLMLDMIwKXY= +cloud.google.com/go/apigeeregistry v0.5.0/go.mod h1:YR5+s0BVNZfVOUkMa5pAR2xGd0A473vA5M7j247o1wM= +cloud.google.com/go/apigeeregistry v0.6.0/go.mod h1:BFNzW7yQVLZ3yj0TKcwzb8n25CFBri51GVGOEUcgQsc= +cloud.google.com/go/apikeys v0.4.0/go.mod h1:XATS/yqZbaBK0HOssf+ALHp8jAlNHUgyfprvNcBIszU= +cloud.google.com/go/apikeys v0.5.0/go.mod h1:5aQfwY4D+ewMMWScd3hm2en3hCj+BROlyrt3ytS7KLI= +cloud.google.com/go/apikeys v0.6.0/go.mod h1:kbpXu5upyiAlGkKrJgQl8A0rKNNJ7dQ377pdroRSSi8= cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno= cloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodCWatWI9Dmak= +cloud.google.com/go/appengine v1.6.0/go.mod h1:hg6i0J/BD2cKmDJbaFSYHFyZkgBEfQrDg/X0V5fJn84= +cloud.google.com/go/appengine v1.7.0/go.mod h1:eZqpbHFCqRGa2aCdope7eC0SWLV1j0neb/QnMJVWx6A= +cloud.google.com/go/appengine v1.7.1/go.mod h1:IHLToyb/3fKutRysUlFO0BPt5j7RiQ45nrzEJmKTo6E= cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/area120 v0.7.0/go.mod h1:a3+8EUD1SX5RUcCs3MY5YasiO1z6yLiNLRiFrykbynY= +cloud.google.com/go/area120 v0.7.1/go.mod h1:j84i4E1RboTWjKtZVWXPqvK5VHQFJRF2c1Nm69pWm9k= cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= cloud.google.com/go/artifactregistry v1.9.0/go.mod h1:2K2RqvA2CYvAeARHRkLDhMDJ3OXy26h3XW+3/Jh2uYc= +cloud.google.com/go/artifactregistry v1.11.1/go.mod h1:lLYghw+Itq9SONbCa1YWBoWs1nOucMH0pwXN1rOBZFI= +cloud.google.com/go/artifactregistry v1.11.2/go.mod h1:nLZns771ZGAwVLzTX/7Al6R9ehma4WUEhZGWV6CeQNQ= +cloud.google.com/go/artifactregistry v1.12.0/go.mod h1:o6P3MIvtzTOnmvGagO9v/rOjjA0HmhJ+/6KAXrmYDCI= +cloud.google.com/go/artifactregistry v1.13.0/go.mod h1:uy/LNfoOIivepGhooAUpL1i30Hgee3Cu0l4VTWHUC08= cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ= cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY= +cloud.google.com/go/asset v1.11.1/go.mod h1:fSwLhbRvC9p9CXQHJ3BgFeQNM4c9x10lqlrdEUYXlJo= +cloud.google.com/go/asset v1.12.0/go.mod h1:h9/sFOa4eDIyKmH6QMpm4eUK3pDojWnUhTgJlk762Hg= +cloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw= cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= +cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM= +cloud.google.com/go/automl v1.12.0/go.mod h1:tWDcHDp86aMIuHmyvjuKeeHEGq76lD7ZqfGLN6B0NuU= cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI= +cloud.google.com/go/baremetalsolution v0.5.0/go.mod h1:dXGxEkmR9BMwxhzBhV0AioD0ULBmuLZI8CdwalUxuss= cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE= +cloud.google.com/go/batch v0.7.0/go.mod h1:vLZN95s6teRUqRQ4s3RLDsH8PvboqBK+rn1oevL159g= cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8= +cloud.google.com/go/beyondcorp v0.4.0/go.mod h1:3ApA0mbhHx6YImmuubf5pyW8srKnCEPON32/5hj+RmM= +cloud.google.com/go/beyondcorp v0.5.0/go.mod h1:uFqj9X+dSfrheVp7ssLTaRHd2EHqSL4QZmH4e8WXGGU= 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/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -95,26 +130,42 @@ cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM7 cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= cloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw= cloud.google.com/go/bigquery v1.44.0/go.mod h1:0Y33VqXTEsbamHJvJHdFmtqHvMIY28aK1+dFsvaChGc= +cloud.google.com/go/bigquery v1.47.0/go.mod h1:sA9XOgy0A8vQK9+MWhEQTY6Tix87M/ZurWFIxmF9I/E= +cloud.google.com/go/bigquery v1.48.0/go.mod h1:QAwSz+ipNgfL5jxiaK7weyOhzdoAy1zFm0Nf1fysJac= +cloud.google.com/go/bigquery v1.49.0/go.mod h1:Sv8hMmTFFYBlt/ftw2uN6dFdQPzBlREY9yBh7Oy7/4Q= +cloud.google.com/go/bigquery v1.50.0/go.mod h1:YrleYEh2pSEbgTBZYMJ5SuSr0ML3ypjRB1zgf7pvQLU= cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y= +cloud.google.com/go/billing v1.12.0/go.mod h1:yKrZio/eu+okO/2McZEbch17O5CB5NpZhhXG6Z766ss= +cloud.google.com/go/billing v1.13.0/go.mod h1:7kB2W9Xf98hP9Sr12KfECgfGclsH3CQR0R08tnRlRbc= cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk= +cloud.google.com/go/binaryauthorization v1.5.0/go.mod h1:OSe4OU1nN/VswXKRBmciKpo9LulY41gch5c68htf3/Q= cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590= +cloud.google.com/go/certificatemanager v1.6.0/go.mod h1:3Hh64rCKjRAX8dXgRAyOcY5vQ/fE1sh8o+Mdd6KPgY8= cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk= +cloud.google.com/go/channel v1.11.0/go.mod h1:IdtI0uWGqhEeatSB62VOoJ8FSUhJ9/+iGkJVqp74CGE= +cloud.google.com/go/channel v1.12.0/go.mod h1:VkxCGKASi4Cq7TbXxlaBezonAYpp1GCnKMY6tnMQnLU= cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA= +cloud.google.com/go/cloudbuild v1.6.0/go.mod h1:UIbc/w9QCbH12xX+ezUsgblrWv+Cv4Tw83GiSMHOn9M= +cloud.google.com/go/cloudbuild v1.7.0/go.mod h1:zb5tWh2XI6lR9zQmsm1VRA+7OCuve5d8S+zJUul8KTg= +cloud.google.com/go/cloudbuild v1.9.0/go.mod h1:qK1d7s4QlO0VwfYn5YuClDGg2hfmLZEb4wQGAbIgL1s= cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk= +cloud.google.com/go/clouddms v1.5.0/go.mod h1:QSxQnhikCLUw13iAbffF2CZxAER3xDGNHjsTAkQJcQA= cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI= +cloud.google.com/go/cloudtasks v1.9.0/go.mod h1:w+EyLsVkLWHcOaqNEyvcKAsWp9p29dL6uL9Nst1cI7Y= +cloud.google.com/go/cloudtasks v1.10.0/go.mod h1:NDSoTLkZ3+vExFEWu2UJV1arUyzVDAiZtdWcsUyNwBs= cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= @@ -128,174 +179,266 @@ cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARy cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo= cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA= cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= -cloud.google.com/go/compute v1.19.1 h1:am86mquDUgjGNWxiGn+5PGLbmgiWXlE/yNWpIpNvuXY= +cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= +cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI= +cloud.google.com/go/compute v1.20.0 h1:cUOcywWuowO9It2i1KX1lIb0HH7gLv6nENKuZGnlcSo= +cloud.google.com/go/compute v1.20.0/go.mod h1:kn5BhC++qUWR/AM3Dn21myV7QbgqejW04cAOrtppaQI= cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= -cloud.google.com/go/compute/metadata v0.2.2/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= +cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo= +cloud.google.com/go/container v1.13.1/go.mod h1:6wgbMPeQRw9rSnKBCAJXnds3Pzj03C4JHamr8asWKy4= +cloud.google.com/go/container v1.14.0/go.mod h1:3AoJMPhHfLDxLvrlVWaK57IXzaPnLaZq63WX59aQBfM= +cloud.google.com/go/container v1.15.0/go.mod h1:ft+9S0WGjAyjDggg5S06DXj+fHJICWg8L7isCQe9pQA= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/containeranalysis v0.7.0/go.mod h1:9aUL+/vZ55P2CXfuZjS4UjQ9AgXoSw8Ts6lemfmxBxI= +cloud.google.com/go/containeranalysis v0.9.0/go.mod h1:orbOANbwk5Ejoom+s+DUCTTJ7IBdBQJDcSylAx/on9s= cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE= cloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOXxZoKYF5wdISM= +cloud.google.com/go/datacatalog v1.8.1/go.mod h1:RJ58z4rMp3gvETA465Vg+ag8BGgBdnRPEMMSTr5Uv+M= +cloud.google.com/go/datacatalog v1.12.0/go.mod h1:CWae8rFkfp6LzLumKOnmVh4+Zle4A3NXLzVJ1d1mRm0= +cloud.google.com/go/datacatalog v1.13.0/go.mod h1:E4Rj9a5ZtAxcQJlEBTLgMTphfP11/lNaAshpoBgemX8= cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataflow v0.8.0/go.mod h1:Rcf5YgTKPtQyYz8bLYhFoIV/vP39eL7fWNcSOyFfLJE= cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0= +cloud.google.com/go/dataform v0.6.0/go.mod h1:QPflImQy33e29VuapFdf19oPbE4aYTJxr31OAPV+ulA= +cloud.google.com/go/dataform v0.7.0/go.mod h1:7NulqnVozfHvWUBpMDfKMUESr+85aJsC/2O0o3jWPDE= cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w= +cloud.google.com/go/datafusion v1.6.0/go.mod h1:WBsMF8F1RhSXvVM8rCV3AeyWVxcC2xY6vith3iw3S+8= cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/datalabeling v0.7.0/go.mod h1:WPQb1y08RJbmpM3ww0CSUAGweL0SxByuW2E+FU+wXcM= cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A= +cloud.google.com/go/dataplex v1.5.2/go.mod h1:cVMgQHsmfRoI5KFYq4JtIBEUbYwc3c7tXmIDhRmNNVQ= +cloud.google.com/go/dataplex v1.6.0/go.mod h1:bMsomC/aEJOSpHXdFKFGQ1b0TDPIeL28nJObeO1ppRs= cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI= +cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4= cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= +cloud.google.com/go/dataqna v0.7.0/go.mod h1:Lx9OcIIeqCrw1a6KdO3/5KMP1wAmTc0slZWwP12Qq3c= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM= +cloud.google.com/go/datastore v1.11.0/go.mod h1:TvGxBIHCS50u8jzG+AW/ppf87v1of8nwzFNgEZU1D3c= cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4= +cloud.google.com/go/datastream v1.6.0/go.mod h1:6LQSuswqLa7S4rPAOZFVjHIG3wJIjZcZrw8JDEDJuIs= +cloud.google.com/go/datastream v1.7.0/go.mod h1:uxVRMm2elUSPuh65IbZpzJNMbuzkcvu5CjMqVIUHrww= cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s= +cloud.google.com/go/deploy v1.6.0/go.mod h1:f9PTHehG/DjCom3QH0cntOVRm93uGBDt2vKzAPwpXQI= +cloud.google.com/go/deploy v1.8.0/go.mod h1:z3myEJnA/2wnB4sgjqdMfgxCA0EqC3RBTNcVPs93mtQ= cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek= cloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFMoosgy+6Gn0s0= +cloud.google.com/go/dialogflow v1.29.0/go.mod h1:b+2bzMe+k1s9V+F2jbJwpHPzrnIyHihAdRFMtn2WXuM= +cloud.google.com/go/dialogflow v1.31.0/go.mod h1:cuoUccuL1Z+HADhyIA7dci3N5zUssgpBJmCzI6fNRB4= +cloud.google.com/go/dialogflow v1.32.0/go.mod h1:jG9TRJl8CKrDhMEcvfcfFkkpp8ZhgPz3sBGmAUYJ2qE= cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q= +cloud.google.com/go/dlp v1.9.0/go.mod h1:qdgmqgTyReTz5/YNSSuueR8pl7hO0o9bQ39ZhtgkWp4= cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4= +cloud.google.com/go/documentai v1.16.0/go.mod h1:o0o0DLTEZ+YnJZ+J4wNfTxmDVyrkzFvttBXXtYRMHkM= +cloud.google.com/go/documentai v1.18.0/go.mod h1:F6CK6iUH8J81FehpskRmhLq/3VlwQvb7TvwOceQ2tbs= cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/domains v0.8.0/go.mod h1:M9i3MMDzGFXsydri9/vW+EWz9sWb4I6WyHqdlAk0idE= cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= +cloud.google.com/go/edgecontainer v0.3.0/go.mod h1:FLDpP4nykgwwIfcLt6zInhprzw0lEi2P1fjO6Ie0qbc= +cloud.google.com/go/edgecontainer v1.0.0/go.mod h1:cttArqZpBB2q58W/upSG++ooo6EsblxDIolxa3jSjbY= cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= +cloud.google.com/go/essentialcontacts v1.5.0/go.mod h1:ay29Z4zODTuwliK7SnX8E86aUF2CTzdNtvv42niCX0M= cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= +cloud.google.com/go/eventarc v1.10.0/go.mod h1:u3R35tmZ9HvswGRBnF48IlYgYeBcPUCjkr4BTdem2Kw= +cloud.google.com/go/eventarc v1.11.0/go.mod h1:PyUjsUKPWoRBCHeOxZd/lbOOjahV41icXyUY5kSTvVY= cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= +cloud.google.com/go/filestore v1.5.0/go.mod h1:FqBXDWBp4YLHqRnVGveOkHDf8svj9r5+mUDLupOWEDs= +cloud.google.com/go/filestore v1.6.0/go.mod h1:di5unNuss/qfZTw2U9nhFqo8/ZDSc466dre85Kydllg= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= +cloud.google.com/go/firestore v1.10.0/go.mod h1:eAeoQCV8F35Mcy4k8ZrQbcSYZOayIwoiU7ZJ6xzH1+o= cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= cloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5UwtlpzoyquQ08= +cloud.google.com/go/functions v1.10.0/go.mod h1:0D3hEOe3DbEvCXtYOZHQZmD+SzYsi1YbI7dGvHfldXw= +cloud.google.com/go/functions v1.12.0/go.mod h1:AXWGrF3e2C/5ehvwYo/GH6O5s09tOPksiKhz+hH8WkA= +cloud.google.com/go/functions v1.13.0/go.mod h1:EU4O007sQm6Ef/PwRsI8N2umygGqPBS/IZQKBQBcJ3c= cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= cloud.google.com/go/gaming v1.8.0/go.mod h1:xAqjS8b7jAVW0KFYeRUxngo9My3f33kFmua++Pi+ggM= +cloud.google.com/go/gaming v1.9.0/go.mod h1:Fc7kEmCObylSWLO334NcO+O9QMDyz+TKC4v1D7X+Bc0= cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo= +cloud.google.com/go/gkebackup v0.4.0/go.mod h1:byAyBGUwYGEEww7xsbnUTBHIYcOPy/PgUWUtOeRm9Vg= cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkeconnect v0.7.0/go.mod h1:SNfmVqPkaEi3bF/B3CNZOAYPYdg7sU+obZ+QTky2Myw= cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/gkehub v0.11.0/go.mod h1:JOWHlmN+GHyIbuWQPl47/C2RFhnFKH38jH9Ascu3n0E= +cloud.google.com/go/gkehub v0.12.0/go.mod h1:djiIwwzTTBrF5NaXCGv3mf7klpEMcST17VBTVVDcuaw= cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI= +cloud.google.com/go/gkemulticloud v0.5.0/go.mod h1:W0JDkiyi3Tqh0TJr//y19wyb1yf8llHVto2Htf2Ja3Y= cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= +cloud.google.com/go/gsuiteaddons v1.5.0/go.mod h1:TFCClYLd64Eaa12sFVmUyG62tk4mdIsI7pAnSXRkcFo= cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE= -cloud.google.com/go/iam v0.10.0/go.mod h1:nXAECrMt2qHpF6RZUZseteD6QyanL68reN4OXPw0UWM= -cloud.google.com/go/iam v0.13.0 h1:+CmB+K0J/33d0zSQ9SlFWUeCCEn5XJA0ZMZ3pHE9u8k= +cloud.google.com/go/iam v0.11.0/go.mod h1:9PiLDanza5D+oWFZiH1uG+RnRCfEGKoyl6yo4cgWZGY= +cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= +cloud.google.com/go/iam v1.0.1/go.mod h1:yR3tmSL8BcZB4bxByRv2jkSIahVmCtfKZwLYGBalRE8= +cloud.google.com/go/iam v1.1.0 h1:67gSqaPukx7O8WLLHMa0PNs3EBGd2eE4d+psbO/CO94= +cloud.google.com/go/iam v1.1.0/go.mod h1:nxdHjaKfCr7fNYx/HJMM8LgiMugmveWlkatear5gVyk= cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= +cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk= +cloud.google.com/go/iap v1.7.0/go.mod h1:beqQx56T9O1G1yNPph+spKpNibDlYIiIixiqsQXxLIo= +cloud.google.com/go/iap v1.7.1/go.mod h1:WapEwPc7ZxGt2jFGB/C/bm+hP0Y6NXzOYGjpPnmMS74= cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= +cloud.google.com/go/ids v1.3.0/go.mod h1:JBdTYwANikFKaDP6LtW5JAi4gubs57SVNQjemdt6xV4= cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= +cloud.google.com/go/iot v1.5.0/go.mod h1:mpz5259PDl3XJthEmh9+ap0affn/MqNSP4My77Qql9o= +cloud.google.com/go/iot v1.6.0/go.mod h1:IqdAsmE2cTYYNO1Fvjfzo9po179rAtJeVGUvkLN3rLE= cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0= cloud.google.com/go/kms v1.8.0/go.mod h1:4xFEhYFqvW+4VMELtZyxomGSYtSQKzM178ylFW4jMAg= -cloud.google.com/go/kms v1.10.2 h1:8UePKEypK3SQ6g+4mn/s/VgE5L7XOh+FwGGRUqvY3Hw= +cloud.google.com/go/kms v1.9.0/go.mod h1:qb1tPTgfF9RQP8e1wq4cLFErVuTJv7UsSC915J8dh3w= +cloud.google.com/go/kms v1.10.0/go.mod h1:ng3KTUtQQU9bPX3+QGLsflZIHlkbn8amFAMY63m8d24= +cloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI= cloud.google.com/go/kms v1.10.2/go.mod h1:9mX3Q6pdroWzL20pbK6RaOdBbXBEhMNgK4Pfz2bweb4= +cloud.google.com/go/kms v1.12.0 h1:IEYV44WsGc6yVO1PlvnRlYzsHM2ImpB598Cglh/3uGw= +cloud.google.com/go/kms v1.12.0/go.mod h1:syfpIBSOqQ/ZqK48RLPkwUhFhvbsA1SyGAq/vPohd20= cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= +cloud.google.com/go/language v1.9.0/go.mod h1:Ns15WooPM5Ad/5no/0n81yUetis74g3zrbeJBE+ptUY= cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/lifesciences v0.8.0/go.mod h1:lFxiEOMqII6XggGbOnKiyZ7IBwoIqA84ClvoezaA/bo= cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw= +cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M= cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= -cloud.google.com/go/longrunning v0.4.0/go.mod h1:eF3Qsw58iX/bkKtVjMTYpH0LRjQ2goDkjkNQTlzq/ZM= -cloud.google.com/go/longrunning v0.4.1 h1:v+yFJOfKC3yZdY6ZUI933pIYdhyhV8S3NpWrXWmg7jM= +cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= +cloud.google.com/go/longrunning v0.4.2/go.mod h1:OHrnaYyLUV6oqwh0xiS7e5sLQhP1m0QU9R+WhGDMgIQ= +cloud.google.com/go/longrunning v0.5.0/go.mod h1:0JNuqRShmscVAhIACGtskSAWtqtOoPkwP0YF1oVEchc= cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= +cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA= cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI= +cloud.google.com/go/maps v0.6.0/go.mod h1:o6DAMMfb+aINHz/p/jbcY+mYeXBoZoxTfdSQ8VAJaCw= +cloud.google.com/go/maps v0.7.0/go.mod h1:3GnvVl3cqeSvgMcpRlQidXsPYuDGQ8naBis7MVzpXsY= cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/mediatranslation v0.7.0/go.mod h1:LCnB/gZr90ONOIQLgSXagp8XUW1ODs2UmUMvcgMfI2I= cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY= +cloud.google.com/go/memcache v1.9.0/go.mod h1:8oEyzXCu+zo9RzlEaEjHl4KkgjlNDaXbCQeQWlzNFJM= cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI= +cloud.google.com/go/metastore v1.10.0/go.mod h1:fPEnH3g4JJAk+gMRnrAnoqyv2lpUCqJPWOodSaf45Eo= cloud.google.com/go/monitoring v1.1.0/go.mod h1:L81pzz7HKn14QCMaCs6NTQkdBnE87TElyanS95vIcl4= cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= cloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w= +cloud.google.com/go/monitoring v1.13.0/go.mod h1:k2yMBAB1H9JT/QETjNkgdCGD9bPF712XiLTVr+cBrpw= +cloud.google.com/go/monitoring v1.15.0/go.mod h1:/LPLNIY93ZtCpPKuO38kEYh+WhhiqIt8HYch2srelRM= cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8= +cloud.google.com/go/networkconnectivity v1.10.0/go.mod h1:UP4O4sWXJG13AqrTdQCD9TnLGEbtNRqjuaaA7bNjF5E= +cloud.google.com/go/networkconnectivity v1.11.0/go.mod h1:iWmDD4QF16VCDLXUqvyspJjIEtBR/4zq5hwnY2X3scM= cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4= +cloud.google.com/go/networkmanagement v1.6.0/go.mod h1:5pKPqyXjB/sgtvB5xqOemumoQNB7y95Q7S+4rjSOPYY= cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/networksecurity v0.7.0/go.mod h1:mAnzoxx/8TBSyXEeESMy9OOYwo1v+gZ5eMRnsT5bC8k= +cloud.google.com/go/networksecurity v0.8.0/go.mod h1:B78DkqsxFG5zRSVuwYFRZ9Xz8IcQ5iECsNrPn74hKHU= cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0= +cloud.google.com/go/notebooks v1.7.0/go.mod h1:PVlaDGfJgj1fl1S3dUwhFMXFgfYGhYQt2164xOMONmE= +cloud.google.com/go/notebooks v1.8.0/go.mod h1:Lq6dYKOYOWUCTvw5t2q1gp1lAp0zxAxRycayS0iJcqQ= cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs= +cloud.google.com/go/optimization v1.3.1/go.mod h1:IvUSefKiwd1a5p0RgHDbWCIbDFgKuEdB+fPPuP0IDLI= cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk= +cloud.google.com/go/orchestration v1.6.0/go.mod h1:M62Bevp7pkxStDfFfTuCOaXgaaqRAga1yKyoMtEoWPQ= cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc= +cloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc= cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw= +cloud.google.com/go/osconfig v1.11.0/go.mod h1:aDICxrur2ogRd9zY5ytBLV89KEgT2MKB2L/n6x1ooPw= cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo= +cloud.google.com/go/oslogin v1.9.0/go.mod h1:HNavntnH8nzrn8JCTT5fj18FuJLFJc4NaZJtBnQtKFs= cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/phishingprotection v0.7.0/go.mod h1:8qJI4QKHoda/sb/7/YmMQ2omRLSLYSu9bU0EKCNI+Lk= cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE= +cloud.google.com/go/policytroubleshooter v1.5.0/go.mod h1:Rz1WfV+1oIpPdN2VvvuboLVRsB1Hclg3CKQ53j9l8vw= +cloud.google.com/go/policytroubleshooter v1.6.0/go.mod h1:zYqaPTsmfvpjm5ULxAyD/lINQxJ0DDsnWOP/GZ7xzBc= cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= +cloud.google.com/go/privatecatalog v0.7.0/go.mod h1:2s5ssIFO69F5csTXcwBP7NPFTZvps26xGzvQ2PQaBYg= +cloud.google.com/go/privatecatalog v0.8.0/go.mod h1:nQ6pfaegeDAq/Q5lrfCQzQLhubPiZhSaNhIgfJlnIXs= 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/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -303,67 +446,104 @@ cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjp cloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcdcPRnFIRI= cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0= cloud.google.com/go/pubsub v1.28.0/go.mod h1:vuXFpwaVoIPQMGXqRyUQigu/AX1S3IWugR9xznmcXX8= +cloud.google.com/go/pubsub v1.30.0/go.mod h1:qWi1OPS0B+b5L+Sg6Gmc9zD1Y+HaM0MdUr7LsupY1P4= +cloud.google.com/go/pubsub v1.31.0/go.mod h1:dYmJ3K97NCQ/e4OwZ20rD4Ym3Bu8Gu9m/aJdWQjdcks= cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg= +cloud.google.com/go/pubsublite v1.6.0/go.mod h1:1eFCS0U11xlOuMFV/0iBqw3zP12kddMeCbj/F3FSj9k= +cloud.google.com/go/pubsublite v1.7.0/go.mod h1:8hVMwRXfDfvGm3fahVbtDbiLePT3gpoiJYJY+vxWxVM= cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE= cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U= +cloud.google.com/go/recaptchaenterprise/v2 v2.6.0/go.mod h1:RPauz9jeLtB3JVzg6nCbe12qNoaa8pXc4d/YukAmcnA= +cloud.google.com/go/recaptchaenterprise/v2 v2.7.0/go.mod h1:19wVj/fs5RtYtynAPJdDTb69oW0vNHYDBTbB4NvMD9c= cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommendationengine v0.7.0/go.mod h1:1reUcE3GIu6MeBz/h5xZJqNLuuVjNg1lmWMPyjatzac= cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70= +cloud.google.com/go/recommender v1.9.0/go.mod h1:PnSsnZY7q+VL1uax2JWkt/UegHssxjUVVCrX52CuEmQ= cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM= +cloud.google.com/go/redis v1.11.0/go.mod h1:/X6eicana+BWcUda5PpwZC48o37SiFVTFSs0fWAJ7uQ= cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0= +cloud.google.com/go/resourcemanager v1.5.0/go.mod h1:eQoXNAiAvCf5PXxWxXjhKQoTMaUSNrEfg+6qdf/wots= +cloud.google.com/go/resourcemanager v1.6.0/go.mod h1:YcpXGRs8fDzcUl1Xw8uOVmI8JEadvhRIkoXXUNVYcVo= +cloud.google.com/go/resourcemanager v1.7.0/go.mod h1:HlD3m6+bwhzj9XCouqmeiGuni95NTrExfhoSrkC/3EI= cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg= +cloud.google.com/go/resourcesettings v1.5.0/go.mod h1:+xJF7QSG6undsQDfsCJyqWXyBwUoJLhetkRMDRnIoXA= cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y= +cloud.google.com/go/retail v1.12.0/go.mod h1:UMkelN/0Z8XvKymXFbD4EhFJlYKRx1FGhQkVPU5kF14= cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo= +cloud.google.com/go/run v0.8.0/go.mod h1:VniEnuBwqjigv0A7ONfQUaEItaiCRVujlMqerPPiktM= +cloud.google.com/go/run v0.9.0/go.mod h1:Wwu+/vvg8Y+JUApMwEDfVfhetv30hCG4ZwDR/IXl2Qg= cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44= +cloud.google.com/go/scheduler v1.8.0/go.mod h1:TCET+Y5Gp1YgHT8py4nlg2Sew8nUHMqcpousDgXJVQc= +cloud.google.com/go/scheduler v1.9.0/go.mod h1:yexg5t+KSmqu+njTIh3b7oYPheFtBWGcbVUYF1GGMIc= cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4= cloud.google.com/go/secretmanager v1.10.0/go.mod h1:MfnrdvKMPNra9aZtQFvBcvRU54hbPD8/HayQdlUgJpU= +cloud.google.com/go/secretmanager v1.11.0/go.mod h1:qeQq0/jyJqrGeULu0GkRsVSPKTvf98AEqJnuEIQiJwA= cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q= cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA= +cloud.google.com/go/security v1.12.0/go.mod h1:rV6EhrpbNHrrxqlvW0BWAIawFWq3X90SduMJdFwtLB8= +cloud.google.com/go/security v1.13.0/go.mod h1:Q1Nvxl1PAgmeW0y3HTt54JYIvUdtcpYKVfIB8AOMZ+0= cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk= +cloud.google.com/go/securitycenter v1.18.1/go.mod h1:0/25gAzCM/9OL9vVx4ChPeM/+DlfGQJDwBy/UC8AKK0= +cloud.google.com/go/securitycenter v1.19.0/go.mod h1:LVLmSg8ZkkyaNy4u7HCIshAngSQ8EcIRREP3xBnyfag= cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= +cloud.google.com/go/servicecontrol v1.10.0/go.mod h1:pQvyvSRh7YzUF2efw7H87V92mxU8FnFDawMClGCNuAA= +cloud.google.com/go/servicecontrol v1.11.0/go.mod h1:kFmTzYzTUIuZs0ycVqRHNaNhgR+UMUpw9n02l/pY+mc= +cloud.google.com/go/servicecontrol v1.11.1/go.mod h1:aSnNNlwEFBY+PWGQ2DoM0JJ/QUXqV5/ZD9DOLB7SnUk= cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4= cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U= +cloud.google.com/go/servicedirectory v1.8.0/go.mod h1:srXodfhY1GFIPvltunswqXpVxFPpZjf8nkKQT7XcXaY= +cloud.google.com/go/servicedirectory v1.9.0/go.mod h1:29je5JjiygNYlmsGz8k6o+OZ8vd4f//bQLtvzkPPT/s= cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= +cloud.google.com/go/servicemanagement v1.6.0/go.mod h1:aWns7EeeCOtGEX4OvZUWCCJONRZeFKiptqKf1D0l/Jc= +cloud.google.com/go/servicemanagement v1.8.0/go.mod h1:MSS2TDlIEQD/fzsSGfCdJItQveu9NXnUniTrq/L8LK4= cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E= cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU= +cloud.google.com/go/serviceusage v1.5.0/go.mod h1:w8U1JvqUqwJNPEOTQjrMHkw3IaIFLoLsPLvsE3xueec= +cloud.google.com/go/serviceusage v1.6.0/go.mod h1:R5wwQcbOWsyuOfbP9tGdAnCAc6B9DRwPG1xtWMDeuPA= cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= +cloud.google.com/go/shell v1.6.0/go.mod h1:oHO8QACS90luWgxP3N9iZVuEiSF84zNyLytb+qE2f9A= cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= +cloud.google.com/go/spanner v1.44.0/go.mod h1:G8XIgYdOK+Fbcpbs7p2fiprDw4CaZX63whnSMLVBxjk= +cloud.google.com/go/spanner v1.45.0/go.mod h1:FIws5LowYz8YAE1J8fOS7DJup8ff7xJeetWEo5REA2M= cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco= +cloud.google.com/go/speech v1.14.1/go.mod h1:gEosVRPJ9waG7zqqnsHpYTOoAS4KouMRLDFMekpJ0J0= +cloud.google.com/go/speech v1.15.0/go.mod h1:y6oH7GhqCaZANH7+Oe0BhgIogsNInLlz542tg3VqeYI= 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.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= @@ -374,58 +554,86 @@ cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= -cloud.google.com/go/storage v1.29.0 h1:6weCgzRvMg7lzuUurI4697AqIRPU1SvzHhynwpW31jI= cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= +cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= +cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= +cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4= +cloud.google.com/go/storagetransfer v1.8.0/go.mod h1:JpegsHHU1eXg7lMHkvf+KE5XDJ7EQu0GwNJbbVGanEw= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA= +cloud.google.com/go/talent v1.5.0/go.mod h1:G+ODMj9bsasAEJkQSzO2uHQWXHHXUomArjWQQYkqK6c= cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4= +cloud.google.com/go/texttospeech v1.6.0/go.mod h1:YmwmFT8pj1aBblQOI3TfKmwibnsfvhIBzPXcW4EBovc= cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg= +cloud.google.com/go/tpu v1.5.0/go.mod h1:8zVo1rYDFuW2l4yZVY0R0fb/v44xLh3llq7RuV61fPM= cloud.google.com/go/trace v1.0.0/go.mod h1:4iErSByzxkyHWzzlAj63/Gmjz0NH1ASqhJguHpGcr6A= cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= cloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA= +cloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk= +cloud.google.com/go/trace v1.10.0/go.mod h1:X3g0Th7+AIjj4rUVhv9JpMv7jpsRIJ9et+wYjCHYbQs= cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= +cloud.google.com/go/translate v1.5.0/go.mod h1:29YDSYveqqpA1CQFD7NQuP49xymq17RXNaUDdc0mNu0= +cloud.google.com/go/translate v1.6.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= +cloud.google.com/go/translate v1.7.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw= +cloud.google.com/go/video v1.12.0/go.mod h1:MLQew95eTuaNDEGriQdcYn0dTwf9oWiA4uYebxM5kdg= +cloud.google.com/go/video v1.13.0/go.mod h1:ulzkYlYgCp15N2AokzKjy7MQ9ejuynOJdf1tR5lGthk= +cloud.google.com/go/video v1.14.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= +cloud.google.com/go/video v1.15.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU= +cloud.google.com/go/videointelligence v1.10.0/go.mod h1:LHZngX1liVtUhZvi2uNS0VQuOzNi2TkY1OakiuoUOjU= cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY= cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E= +cloud.google.com/go/vision/v2 v2.6.0/go.mod h1:158Hes0MvOS9Z/bDMSFpjwsUrZ5fPrdwuyyvKSGAGMY= +cloud.google.com/go/vision/v2 v2.7.0/go.mod h1:H89VysHy21avemp6xcf9b9JvZHVehWbET0uT/bcuY/0= cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= +cloud.google.com/go/vmmigration v1.5.0/go.mod h1:E4YQ8q7/4W9gobHjQg4JJSgXXSgY21nA5r8swQV+Xxc= +cloud.google.com/go/vmmigration v1.6.0/go.mod h1:bopQ/g4z+8qXzichC7GW1w2MjbErL54rk3/C843CjfY= cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208= +cloud.google.com/go/vmwareengine v0.2.2/go.mod h1:sKdctNJxb3KLZkE/6Oui94iw/xs9PRNC2wnNLXsHvH8= +cloud.google.com/go/vmwareengine v0.3.0/go.mod h1:wvoyMvNWdIzxMYSpH/R7y2h5h3WFkx6d+1TIsP39WGY= cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= +cloud.google.com/go/vpcaccess v1.6.0/go.mod h1:wX2ILaNhe7TlVa4vC5xce1bCnqE3AeH27RV31lnmZes= cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A= +cloud.google.com/go/webrisk v1.8.0/go.mod h1:oJPDuamzHXgUc+b8SiHRcVInZQuybnvEW72PqTc7sSg= cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ= +cloud.google.com/go/websecurityscanner v1.5.0/go.mod h1:Y6xdCPy81yi0SQnDY1xdNTNpfY1oAgXUlcfN3B3eSng= cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= +cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= code.cloudfoundry.org/clock v0.0.0-20180518195852-02e53af36e6c/go.mod h1:QD9Lzhd/ux6eNQVUDVRJX/RKTigpewimNYBi7ivZKY8= code.gitea.io/gitea-vet v0.2.1/go.mod h1:zcNbT/aJEmivCAhfmkHOlT645KNOf9W2KnkLgFjGGfE= code.gitea.io/sdk/gitea v0.15.1 h1:WJreC7YYuxbn0UDaPuWIe/mtiNKTvLN8MLkaw71yx/M= code.gitea.io/sdk/gitea v0.15.1/go.mod h1:klY2LVI3s3NChzIk/MzMn7G1FHrfU7qd63iSMVoHRBA= -contrib.go.opencensus.io/exporter/aws v0.0.0-20200617204711-c478e41e60e9/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= +contrib.go.opencensus.io/exporter/aws v0.0.0-20230502192102-15967c811cec/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= contrib.go.opencensus.io/exporter/stackdriver v0.13.14/go.mod h1:5pSSGY0Bhuk7waTHuDf4aQ8D2DrhgETRo9fy6k3Xlzc= contrib.go.opencensus.io/integrations/ocsql v0.1.7/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= +git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= github.com/Abirdcfly/dupword v0.0.11 h1:z6v8rMETchZXUIuHxYNmlUAuKuB21PeaSymTed16wgU= github.com/Abirdcfly/dupword v0.0.11/go.mod h1:wH8mVGuf3CP5fsBTkfWwwwKTjDnVVCxtU8d8rgeVYXA= github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= @@ -443,29 +651,33 @@ github.com/Azure/azure-sdk-for-go v66.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9mo github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU= github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.0.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.1/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.2/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.3.0/go.mod h1:tZoQYdDZNOiIjdSn0dVWVfl0NEPGOJqVLzSrcFk4Is0= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.3.1 h1:gVXuXcWd1i4C2Ruxe321aU+IKGaStvGB/S90PUPB/W8= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.3.1/go.mod h1:DffdKW9RFqa5VgmsjUOsS7UE7eiA5iAvYUs63bhKQ0M= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0/go.mod h1:ON4tFdPTwRcgWEaVDrN3584Ef+b7GgSJaXxe5fW9t4M= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.1 h1:SEy2xmstIphdPwNBUi7uhvjyjhVKISfwjfOJmuy7kg4= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.1/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.0.0/go.mod h1:+6sju8gk8FRmSajX3Oz4G5Gm7P+mbqE9FVaXXFYTkCM= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.1.0/go.mod h1:bhXu1AjYL+wutSL/kpSq6s7733q2Rb0yuot9Zgfqa/0= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.1 h1:T8quHYlUGyb/oqtSTwqlCr1ilJHrDv+ZtpSfo+hm1BU= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.1/go.mod h1:gLa1CL2RNE4s7M3yopJ/p0iq5DdY6Yv5ZUt9MTRZOQM= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 h1:vcYCAze6p19qBW7MhZybIsqD8sMV8js0NyQM8JDnVtg= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0/go.mod h1:OQeznEEkTZ9OrhHJoDD8ZDq51FHgXjqtP9z6bEwBq9U= github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.1/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.2 h1:+5VZ72z0Qan5Bog5C+ZkgSqUbeVUd9wgtHOrIKuc5b8= github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.2/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.9.0 h1:TOFrNxfjslms5nLLIMjW7N0+zSALX4KiGsptmpb16AA= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.9.0/go.mod h1:EAyXOW1F6BTJPiK2pDvmnvxOHPxoTYWoqBeIlql+QhI= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.0/go.mod h1:9V2j0jn9jDEkCkv8w/bKTNppX/d0FVA1ud77xCIP4KA= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 h1:sXr+ck84g/ZlZUOZiNELInmMgOsuGwdjjVkEIde0OtY= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= +github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 h1:m/sWOGCREuSBqg2htVQTBY8nOZpyajYztF0vUvSZTuM= +github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0/go.mod h1:Pu5Zksi2KrU7LPbZbNINx6fuVrUp/ffvpxdDj+i8LeE= github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 h1:FbH3BbSb4bvGluTesZZ+ttN/MDsnMmQP36OSnDuSXqw= github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1/go.mod h1:9V2j0jn9jDEkCkv8w/bKTNppX/d0FVA1ud77xCIP4KA= -github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus v1.2.0/go.mod h1:R6+0udeRV8iYSTVuT5RT7If4sc46K5Bz3ZKrmvZQF7U= +github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus v1.4.0/go.mod h1:pXDkeh10bAqElvd+S5Ppncj+DCKvJGXNa8rRT2R7rIw= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0 h1:u/LLAOFgsMv7HmNL4Qufg58y+qElGOt5qv0z1mURkRY= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0/go.mod h1:2e8rMJtl2+2j+HXbTBwnyGpm5Nou7KhvSfxOq8JpTag= github.com/Azure/go-amqp v0.17.0/go.mod h1:9YJ3RhxRT1gquYnzpZO1vcYMMpAdJT+QEg6fwmw9Zlg= -github.com/Azure/go-amqp v0.18.1/go.mod h1:+bg0x3ce5+Q3ahCEXnCsGG3ETpDQe3MEVnOuT2ywPwc= +github.com/Azure/go-amqp v1.0.0/go.mod h1:+bg0x3ce5+Q3ahCEXnCsGG3ETpDQe3MEVnOuT2ywPwc= +github.com/Azure/go-amqp v1.0.1/go.mod h1:+bg0x3ce5+Q3ahCEXnCsGG3ETpDQe3MEVnOuT2ywPwc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= @@ -484,8 +696,9 @@ github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQW github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= -github.com/Azure/go-autorest/autorest/adal v0.9.22 h1:/GblQdIudfEM3AWWZ0mrYJQSd7JS4S/Mbzh6F0ov0Xc= github.com/Azure/go-autorest/autorest/adal v0.9.22/go.mod h1:XuAbAEUv2Tta//+voMI038TrJBqjKam0me7qR+L8Cmk= +github.com/Azure/go-autorest/autorest/adal v0.9.23 h1:Yepx8CvFxwNKpH6ja7RZ+sKX+DWYNldbLiALMC3BTz8= +github.com/Azure/go-autorest/autorest/adal v0.9.23/go.mod h1:5pcMqFkdPhviJdlEy3kC/v1ZLnQl0MH6XA5YCcMhy4c= github.com/Azure/go-autorest/autorest/azure/auth v0.5.12 h1:wkAZRgT/pn8HhFyzfe9UnqOjJYqlembgCTi72Bm/xKk= github.com/Azure/go-autorest/autorest/azure/auth v0.5.12/go.mod h1:84w/uV8E37feW2NCJ08uT9VBfjfUHpgLVnG2InYD6cg= github.com/Azure/go-autorest/autorest/azure/cli v0.4.5/go.mod h1:ADQAXrkgm7acgWVUNamOgh8YNrv4p27l3Wc55oVfpzg= @@ -507,8 +720,9 @@ github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUM github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4= github.com/AzureAD/microsoft-authentication-library-for-go v0.5.1/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4= -github.com/AzureAD/microsoft-authentication-library-for-go v0.8.1 h1:oPdPEZFSbl7oSPEAIPMPBMUmiL+mqgzBJwM/9qYcwNg= github.com/AzureAD/microsoft-authentication-library-for-go v0.8.1/go.mod h1:4qFor3D/HDsvBME35Xy9rwW9DecL+M2sNw1ybjPtwA0= +github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 h1:OBhqkivkhkMqLPymWEppkm7vgPQY2XsHoEkaMQ0AdZY= +github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.0.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= @@ -520,19 +734,21 @@ github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rW github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0 h1:+r1rSv4gvYn0wmRjC8X7IAzX8QezqtFV9m0MUHFJgts= github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0/go.mod h1:b3g59n2Y+T5xmcxJL+UEG2f8cQploZm1mR/v6BW0mU0= -github.com/GoogleCloudPlatform/cloudsql-proxy v1.33.2/go.mod h1:uqoR4sJc63p7ugW8a/vsEspOsNuehbi7ptS2CHCyOnY= +github.com/GoogleCloudPlatform/cloudsql-proxy v1.33.7/go.mod h1:JBp/RvKNOoIkR5BdMSXswBksHcPZ/41sbBV+GhSjgMY= github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= +github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0= github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= -github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZCSYp4Z0m2dk6cEM60= -github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= +github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA= +github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= @@ -541,8 +757,9 @@ github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugX github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.4.17-0.20210324224401-5516f17a5958/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= +github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= @@ -564,11 +781,10 @@ github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEV github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OpenPeeDeeP/depguard v1.1.1 h1:TSUznLjvp/4IUP+OQ0t/4jF4QUyxIcVX8YnghZdunyA= github.com/OpenPeeDeeP/depguard v1.1.1/go.mod h1:JtAMzWkmFEzDPyAd+W0NHl1lvpQKTvT9jnRVsohBKpc= -github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= -github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 h1:wPbRQzjjwFc0ih8puEVAOFGELsn1zoIIYdxvML7mDxA= -github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= -github.com/ProtonMail/go-mime v0.0.0-20190923161245-9b5a4261663a h1:W6RrgN/sTxg1msqzFFb+G80MFmpjMw61IU+slm+wln4= -github.com/ProtonMail/gopenpgp/v2 v2.2.2 h1:u2m7xt+CZWj88qK1UUNBoXeJCFJwJCZ/Ff4ymGoxEXs= +github.com/ProtonMail/go-crypto v0.0.0-20230626094100-7e9e0395ebec h1:vV3RryLxt42+ZIVOFbYJCH1jsZNTNmj2NYru5zfx+4E= +github.com/ProtonMail/go-crypto v0.0.0-20230626094100-7e9e0395ebec/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f h1:tCbYj7/299ekTTXpdwKYF8eBlsYsDVoggDAuAjoK66k= +github.com/ProtonMail/gopenpgp/v2 v2.7.1 h1:Awsg7MPc2gD3I7IFac2qE3Gdls0lZW8SzrFZ3k1oz0s= github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= @@ -577,10 +793,15 @@ github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:H github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk= -github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= +github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ= +github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= +github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= +github.com/alecthomas/kingpin/v2 v2.3.1/go.mod h1:oYL5vtsvEHZGHxU7DMp32Dvx+qL+ptGn6lWaot2vCNE= +github.com/alecthomas/kingpin/v2 v2.3.2/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= @@ -595,15 +816,19 @@ github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pO github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= -github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= -github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0= +github.com/apache/arrow/go/v11 v11.0.0/go.mod h1:Eg5OsL5H+e299f7u5ssuXsuHQVEGC4xei5aX110hRiI= +github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-metrics v0.3.3/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= +github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= @@ -617,8 +842,8 @@ github.com/ashanbrown/forbidigo v1.5.1 h1:WXhzLjOlnuDYPYQo/eFlcFMi8X/kLfvWLYu6CS github.com/ashanbrown/forbidigo v1.5.1/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU= github.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5FcB28s= github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI= -github.com/atc0005/go-teams-notify/v2 v2.7.0 h1:yRKblRTM/v+FnbibPAQiBcgT+aUBn/8zj9E/UxBdIRg= -github.com/atc0005/go-teams-notify/v2 v2.7.0/go.mod h1:nJeYAr8U1KtT376MUHHiy47nqy/4Mn0UR8veVQxdMcM= +github.com/atc0005/go-teams-notify/v2 v2.7.1 h1:ksY4tG9KAIzx9BJrBYqq5CZaVMk+WrlgsxwrLV5wUVQ= +github.com/atc0005/go-teams-notify/v2 v2.7.1/go.mod h1:wm/+j2d5u6Rg0BeAwp1T5YXhEhf3uRMZAEwP6ZY6TRg= github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= github.com/aws/aws-sdk-go v1.15.27/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= @@ -626,51 +851,43 @@ github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm github.com/aws/aws-sdk-go v1.43.11/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.43.31/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.44.156/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= -github.com/aws/aws-sdk-go v1.44.187/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= -github.com/aws/aws-sdk-go v1.44.200/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= -github.com/aws/aws-sdk-go v1.44.259 h1:7yDn1dcv4DZFMKpu+2exIH5O6ipNj9qXrKfdMUaIJwY= -github.com/aws/aws-sdk-go v1.44.259/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.44.245/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.44.284 h1:Oc5Kubi43/VCkerlt3ZU3KpBju6BpNkoG3s7E8vj/O8= +github.com/aws/aws-sdk-go v1.44.284/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= github.com/aws/aws-sdk-go-v2 v1.16.7/go.mod h1:6CpKuLXg2w7If3ABZCl/qZ6rEgwtjZTn4eAf4RcEyuw= github.com/aws/aws-sdk-go-v2 v1.16.8/go.mod h1:6CpKuLXg2w7If3ABZCl/qZ6rEgwtjZTn4eAf4RcEyuw= github.com/aws/aws-sdk-go-v2 v1.16.11/go.mod h1:WTACcleLz6VZTp7fak4EO5b9Q4foxbn+8PIz3PmyKlo= -github.com/aws/aws-sdk-go-v2 v1.17.4/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= -github.com/aws/aws-sdk-go-v2 v1.18.0 h1:882kkTpSFhdgYRKVZ/VCgf7sd0ru57p2JCxz4/oN5RY= -github.com/aws/aws-sdk-go-v2 v1.18.0/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= +github.com/aws/aws-sdk-go-v2 v1.18.1 h1:+tefE750oAb7ZQGzla6bLkOwfcQCEtC5y2RqoqCeqKo= +github.com/aws/aws-sdk-go-v2 v1.18.1/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10 h1:dK82zF6kkPeCo8J1e+tGx4JdvDIQzj7ygIoLg8WMuGs= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10/go.mod h1:VeTZetY5KRJLuD/7fkQXMU6Mw7H5m/KP2J5Iy9osMno= github.com/aws/aws-sdk-go-v2/config v1.15.15/go.mod h1:A1Lzyy/o21I5/s2FbyX5AevQfSVXpvvIDCoVFD0BC4E= -github.com/aws/aws-sdk-go-v2/config v1.18.12/go.mod h1:J36fOhj1LQBr+O4hJCiT8FwVvieeoSGOtPuvhKlsNu8= -github.com/aws/aws-sdk-go-v2/config v1.18.23 h1:gc3lPsAnZpwfi2exupmgHfva0JiAY2BWDg5JWYlmA28= -github.com/aws/aws-sdk-go-v2/config v1.18.23/go.mod h1:rx0ruaQ+gk3OrLFHRRx56lA//XxP8K8uPzeNiKNuWVY= +github.com/aws/aws-sdk-go-v2/config v1.18.27 h1:Az9uLwmssTE6OGTpsFqOnaGpLnKDqNYOJzWuC6UAYzA= +github.com/aws/aws-sdk-go-v2/config v1.18.27/go.mod h1:0My+YgmkGxeqjXZb5BYme5pc4drjTnM+x1GJ3zv42Nw= github.com/aws/aws-sdk-go-v2/credentials v1.12.10/go.mod h1:g5eIM5XRs/OzIIK81QMBl+dAuDyoLN0VYaLP+tBqEOk= -github.com/aws/aws-sdk-go-v2/credentials v1.13.12/go.mod h1:37HG2MBroXK3jXfxVGtbM2J48ra2+Ltu+tmwr/jO0KA= -github.com/aws/aws-sdk-go-v2/credentials v1.13.22 h1:Hp9rwJS4giQ48xqonRV/s7QcDf/wxF6UY7osRmBabvI= -github.com/aws/aws-sdk-go-v2/credentials v1.13.22/go.mod h1:BfNcm6A9nSd+bzejDcMJ5RE+k6WbkCwWkQil7q4heRk= +github.com/aws/aws-sdk-go-v2/credentials v1.13.26 h1:qmU+yhKmOCyujmuPY7tf5MxR/RKyZrOPO3V4DobiTUk= +github.com/aws/aws-sdk-go-v2/credentials v1.13.26/go.mod h1:GoXt2YC8jHUBbA4jr+W3JiemnIbkXOfxSXcisUsZ3os= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.9/go.mod h1:KDCCm4ONIdHtUloDcFvK2+vshZvx4Zmj7UMDfusuz5s= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.22/go.mod h1:YGSIJyQ6D6FjKMQh16hVFSIUD54L4F7zTGePqYMYYJU= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.3 h1:jJPgroehGvjrde3XufFIJUZVK5A2L9a3KwSFgKy9n8w= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.3/go.mod h1:4Q0UFP0YJf0NrsEuEYHpM9fTSEVnD16Z3uyEF7J9JGM= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.51 h1:iTFYCAdKzSAjGnVIUe88Hxvix0uaBqr0Rv7qJEOX5hE= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.51/go.mod h1:7Grl2gV+dx9SWrUIgwwlUvU40t7+lOSbx34XwfmsTkY= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.4 h1:LxK/bitrAr4lnh9LnIS6i7zWbCOdMsfzKFBI6LUCS0I= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.4/go.mod h1:E1hLXN/BL2e6YizK1zFlYd8vsfi2GTjbjBazinMmeaM= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.70 h1:4bh28MeeXoBFTjb0JjQ5sVatzlf5xA1DziV8mZed9v4= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.70/go.mod h1:9yI5NXzqy2yOiMytv6QLZHvlyHLwYxO9iIq+bZIbrFg= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.14/go.mod h1:kdjrMwHwrC3+FsKhNcCMJ7tUVj/8uSD5CZXeQ4wV6fM= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.15/go.mod h1:pWrr2OoHlT7M/Pd2y4HV3gJyPb3qj5qMmnPkKSNPYK4= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.18/go.mod h1:348MLhzV1GSlZSMusdwQpXKbhD7X2gbI/TxwAPKkYZQ= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.28/go.mod h1:3lwChorpIM/BhImY/hy+Z6jekmN92cXGPI1QJasVPYY= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33 h1:kG5eQilShqmJbv11XL1VpyDbaEJzWxd4zRiCG30GSn4= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.33/go.mod h1:7i0PF1ME/2eUPFcjkVIwq+DOygHEoK92t5cDqNgYbIw= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.34 h1:A5UqQEmPaCFpedKouS4v+dHCTUo2sKqhoKO9U5kxyWo= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.34/go.mod h1:wZpTEecJe0Btj3IYnDx/VlUzor9wm3fJHyvLpQF0VwY= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.8/go.mod h1:ZIV8GYoC6WLBW5KGs+o4rsc65/ozd+eQ0L31XF5VDwk= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.9/go.mod h1:08tUpeSGN33QKSO7fwxXczNfiwCpbj+GxK6XKwqWVv0= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.12/go.mod h1:ckaCVTEdGAxO6KwTGzgskxR1xM+iJW4lxMyDFVda2Fc= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.22/go.mod h1:EqK7gVrIGAHyZItrD1D8B0ilgwMD1GiWAmbU4u/JHNk= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27 h1:vFQlirhuM8lLlpI7imKOMsjdQLuN9CPi+k44F/OFVsk= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.27/go.mod h1:UrHnn3QV/d0pBZ6QBAEQcqFLf8FAzLmoUfPVIueOvoM= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.28 h1:srIVS45eQuewqz6fKKu6ZGXaq6FuFg5NzgQBAM6g8Y4= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.28/go.mod h1:7VRpKQQedkfIEXb4k52I7swUnZP0wohVajJMRn3vsUw= github.com/aws/aws-sdk-go-v2/internal/ini v1.3.16/go.mod h1:CYmI+7x03jjJih8kBEEFKRQc40UjUokT0k7GbvrhhTc= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.29/go.mod h1:TwuqRBGzxjQJIwH16/fOZodwXt2Zxa9/cwJC5ke4j7s= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.34 h1:gGLG7yKaXG02/jBlg210R7VgQIotiQntNhsCFejawx8= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.34/go.mod h1:Etz2dj6UHYuw+Xw830KfzCfWGMzqvUTCjUj5b76GVDc= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.19 h1:FGvpyTg2LKEmMrLlpjOgkoNp9XF5CGeyAyo33LdqZW8= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.19/go.mod h1:8W88sW3PjamQpKFUQvHWWKay6ARsNvZnzU7+a4apubw= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.35 h1:LWA+3kDM8ly001vJ1X1waCuLJdtTl48gwkPKWy9sosI= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.35/go.mod h1:0Eg1YjxE0Bhn56lx+SHJwCzhW+2JGtizsrx+lCqrfm0= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.26 h1:wscW+pnn3J1OYnanMnza5ZVYXLX4cKk5rAvUAl4Qu+c= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.26/go.mod h1:MtYiox5gvyB+OyP0Mr0Sm/yzbEAIPL9eijj/ouHAPw0= github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o= github.com/aws/aws-sdk-go-v2/service/ecr v1.17.9/go.mod h1:fkIc4qe3SfQhPt/HAmDG7DJMjMBHElHV44axRyUSojA= github.com/aws/aws-sdk-go-v2/service/ecr v1.17.12 h1:qBuF6exFzbKurzWqBR+7ptvnuKuWipm9LclsB7A/AUo= @@ -680,34 +897,29 @@ github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.13.12 h1:JfDKV54iJuX2YE1NzzHMQ github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.13.12/go.mod h1:Hcfe3RBksYrl0fgSxZ4wvhSt6IiZBh+VlkaTKQLu9PE= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11 h1:y2+VQzC6Zh2ojtV2LoC0MNwHWc6qXv/j2vrQtlftkdA= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11/go.mod h1:iV4q2hsqtNECrfmlXyord9u4zyuFEJX9eLgLpSPzWA8= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.23 h1:c5+bNdV8E4fIPteWx4HZSkqI07oY9exbfQ7JH7Yx4PI= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.23/go.mod h1:1jcUfF+FAOEwtIcNiHPaV4TSoZqkUIPzrohmD7fb95c= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.29 h1:zZSLP3v3riMOP14H7b4XP0uyfREDQOYv2cqIrvTXDNQ= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.29/go.mod h1:z7EjRjVwZ6pWcWdI2H64dKttvzaP99jRIj5hphW0M5U= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.9/go.mod h1:yQowTpvdZkFVuHrLBXmczat4W+WJKg/PafBZnGBLga0= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.22/go.mod h1:xt0Au8yPIwYXf/GYPy/vl4K3CgwhfQMYbrH7DlUUIws= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.27 h1:0iKliEXAcCa2qVtRs7Ot5hItA2MsufrphbRFlz1Owxo= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.27/go.mod h1:EOwBD4J4S5qYszS5/3DpkejfuK+Z5/1uzICfPaZLtqw= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.22 h1:ISLJ2BKXe4zzyZ7mp5ewKECiw0U7KpLgS3S6OxY9Cm0= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.22/go.mod h1:QFVbqK54XArazLvn2wvWMRBi/jGrWii46qbr5DyPGjc= -github.com/aws/aws-sdk-go-v2/service/kms v1.20.2/go.mod h1:vdqtUOdVuf5ooy+hJ2GnzqNo94xiAA9s1xbZ1hQgRE0= -github.com/aws/aws-sdk-go-v2/service/kms v1.21.1 h1:Q03Jqh1enA8keCiGZpLetpk58Ll9iGejE5bOErxyGAU= -github.com/aws/aws-sdk-go-v2/service/kms v1.21.1/go.mod h1:EEfb4gfSphdVpRo5sGf2W3KvJbelYUno5VaXR5MJ3z4= -github.com/aws/aws-sdk-go-v2/service/s3 v1.30.2 h1:5EQWIFO+Hc8E2hFcXQJ1vm6ufl/PMt/6RVRDZRju2vM= -github.com/aws/aws-sdk-go-v2/service/s3 v1.30.2/go.mod h1:SXDHd6fI2RhqB7vmAzyYQCTQnpZrIprVJvYxpzW3JAM= -github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.18.3/go.mod h1:hqPcyOuLU6yWIbLy3qMnQnmidgKuIEwqIlW6+chYnog= -github.com/aws/aws-sdk-go-v2/service/sns v1.20.2/go.mod h1:VN2n9SOMS1lNbh5YD7o+ho0/rgfifSrK//YYNiVVF5E= -github.com/aws/aws-sdk-go-v2/service/sqs v1.20.2/go.mod h1:1ttxGjUHZliCQMpPss1sU5+Ph/5NvdMFRzr96bv8gm0= -github.com/aws/aws-sdk-go-v2/service/ssm v1.35.2/go.mod h1:VLSz2SHUKYFSOlXB/GlXoLU6KPYQJAbw7I20TDJdyws= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.28 h1:bkRyG4a929RCnpVSTvLM2j/T4ls015ZhhYApbmYs15s= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.28/go.mod h1:jj7znCIg05jXlaGBlFMGP8+7UN3VtCkRBG2spnmRQkU= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.3 h1:dBL3StFxHtpBzJJ/mNEsjXVgfO+7jR0dAIEwLqMapEA= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.3/go.mod h1:f1QyiAsvIv4B49DmCqrhlXqyaR+0IxMmyX+1P+AnzOM= +github.com/aws/aws-sdk-go-v2/service/kms v1.22.2 h1:jwmtdM1/l1DRNy5jQrrYpsQm8zwetkgeqhAqefDr1yI= +github.com/aws/aws-sdk-go-v2/service/kms v1.22.2/go.mod h1:aNfh11Smy55o65PB3MyKbkM8BFyFUcZmj1k+4g8eNfg= +github.com/aws/aws-sdk-go-v2/service/s3 v1.35.0 h1:ya7fmrN2fE7s1P2gaPbNg5MTkERVWfsH8ToP1YC4Z9o= +github.com/aws/aws-sdk-go-v2/service/s3 v1.35.0/go.mod h1:aVbf0sko/TsLWHx30c/uVu7c62+0EAJ3vbxaJga0xCw= +github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.19.10/go.mod h1:ezn6mzIRqTPdAbDpm03dx4y9g6rvGRb2q33wS76dCxw= +github.com/aws/aws-sdk-go-v2/service/sns v1.20.13/go.mod h1:rWrvp9i8y/lX94lS7Kn/0iu9RY6vXzeKRqS/knVX8/c= +github.com/aws/aws-sdk-go-v2/service/sqs v1.23.2/go.mod h1:TaV67b6JMD1988x/uMDop/JnMFK6v5d4Ru+sDmFg+ww= +github.com/aws/aws-sdk-go-v2/service/ssm v1.36.6/go.mod h1:NdyMyZH/FzmCaybTrVMBD0nTCGrs1G4cOPKHFywx9Ns= github.com/aws/aws-sdk-go-v2/service/sso v1.11.13/go.mod h1:d7ptRksDDgvXaUvxyHZ9SYh+iMDymm94JbVcgvSYSzU= -github.com/aws/aws-sdk-go-v2/service/sso v1.12.1/go.mod h1:IgV8l3sj22nQDd5qcAGY0WenwCzCphqdbFOpfktZPrI= -github.com/aws/aws-sdk-go-v2/service/sso v1.12.10 h1:UBQjaMTCKwyUYwiVnUt6toEJwGXsLBI6al083tpjJzY= -github.com/aws/aws-sdk-go-v2/service/sso v1.12.10/go.mod h1:ouy2P4z6sJN70fR3ka3wD3Ro3KezSxU6eKGQI2+2fjI= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.1/go.mod h1:O1YSOg3aekZibh2SngvCRRG+cRHKKlYgxf/JBF/Kr/k= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.10 h1:PkHIIJs8qvq0e5QybnZoG1K/9QTrLr9OsqCIo59jOBA= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.10/go.mod h1:AFvkxc8xfBe8XA+5St5XIHHrQQtkxqrRincx4hmMHOk= +github.com/aws/aws-sdk-go-v2/service/sso v1.12.12 h1:nneMBM2p79PGWBQovYO/6Xnc2ryRMw3InnDJq1FHkSY= +github.com/aws/aws-sdk-go-v2/service/sso v1.12.12/go.mod h1:HuCOxYsF21eKrerARYO6HapNeh9GBNq7fius2AcwodY= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.12 h1:2qTR7IFk7/0IN/adSFhYu9Xthr0zVFTgBrmPldILn80= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.12/go.mod h1:E4VrHCPzmVB/KFXtqBGKb3c8zpbNBgKe3fisDNLAW5w= github.com/aws/aws-sdk-go-v2/service/sts v1.16.10/go.mod h1:cftkHYN6tCDNfkSasAmclSfl4l7cySoay8vz7p/ce0E= -github.com/aws/aws-sdk-go-v2/service/sts v1.18.3/go.mod h1:b+psTJn33Q4qGoDaM7ZiOVVG8uVjGI6HaZ8WBHdgDgU= -github.com/aws/aws-sdk-go-v2/service/sts v1.18.11 h1:uBE+Zj478pfxV98L6SEpvxYiADNjTlMNY714PJLE7uo= -github.com/aws/aws-sdk-go-v2/service/sts v1.18.11/go.mod h1:BgQOMsg8av8jset59jelyPW7NoZcZXLVpDsXunGDrk8= +github.com/aws/aws-sdk-go-v2/service/sts v1.19.2 h1:XFJ2Z6sNUUcAz9poj+245DMkrHE4h2j5I9/xD50RHfE= +github.com/aws/aws-sdk-go-v2/service/sts v1.19.2/go.mod h1:dp0yLPsLBOi++WTxzCjA/oZqi6NPIhoR+uF7GeMU9eg= github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= github.com/aws/smithy-go v1.12.0/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= github.com/aws/smithy-go v1.12.1/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= @@ -744,6 +956,8 @@ github.com/bmatcuk/doublestar/v4 v4.2.0/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTS github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/bombsimon/wsl/v3 v3.4.0 h1:RkSxjT3tmlptwfgEgTgU+KYKLI35p/tviNXNXiL2aNU= github.com/bombsimon/wsl/v3 v3.4.0/go.mod h1:KkIB+TXkqy6MvK9BDZVbZxKNYsE1/oLRJbIFtf14qqo= +github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/breml/bidichk v0.2.4 h1:i3yedFWWQ7YzjdZJHnPo9d/xURinSq3OM+gyM43K4/8= github.com/breml/bidichk v0.2.4/go.mod h1:7Zk0kRFt1LIZxtQdl9W9JwGAcLTTkOs+tN7wuEYGJ3s= github.com/breml/errchkjson v0.3.1 h1:hlIeXuspTyt8Y/UmP5qy1JocGNR00KQHgfaNtRAjoxQ= @@ -756,11 +970,11 @@ github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0Bsq github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= github.com/butuzov/ireturn v0.1.1 h1:QvrO2QF2+/Cx1WA/vETCIYBKtRjc30vesdoPUNo1EbY= github.com/butuzov/ireturn v0.1.1/go.mod h1:Wh6Zl3IMtTpaIKbmwzqi6olnM9ptYQxxVacMsOEFPoc= -github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/caarlos0/ctrlc v1.2.0 h1:AtbThhmbeYx1WW3WXdWrd94EHKi+0NPRGS4/4pzrjwk= github.com/caarlos0/ctrlc v1.2.0/go.mod h1:n3gDlSjsXZ7rbD9/RprIR040b7oaLfNStikPd4gFago= -github.com/caarlos0/env/v8 v8.0.0 h1:POhxHhSpuxrLMIdvTGARuZqR4Jjm8AYmoi/JKlcScs0= -github.com/caarlos0/env/v8 v8.0.0/go.mod h1:7K4wMY9bH0esiXSSHlfHLX5xKGQMnkH5Fk4TDSSSzfo= +github.com/caarlos0/env/v9 v9.0.0 h1:SI6JNsOA+y5gj9njpgybykATIylrRMklbs5ch6wO6pc= +github.com/caarlos0/env/v9 v9.0.0/go.mod h1:ye5mlCVMYh6tZ+vCgrs/B95sj88cg5Tlnc0XIzgZ020= github.com/caarlos0/go-reddit/v3 v3.0.1 h1:w8ugvsrHhaE/m4ez0BO/sTBOBWI9WZTjG7VTecHnql4= github.com/caarlos0/go-reddit/v3 v3.0.1/go.mod h1:QlwgmG5SAqxMeQvg/A2dD1x9cIZCO56BMnMdjXLoisI= github.com/caarlos0/go-rpmutils v0.2.1-0.20211112020245-2cd62ff89b11 h1:IRrDwVlWQr6kS1U8/EtyA1+EHcc4yl8pndcqXWrEamg= @@ -768,8 +982,8 @@ github.com/caarlos0/go-shellwords v1.0.12 h1:HWrUnu6lGbWfrDcFiHcZiwOLzHWjjrPVehU github.com/caarlos0/go-shellwords v1.0.12/go.mod h1:bYeeX1GrTLPl5cAMYEzdm272qdsQAZiaHgeF0KTk1Gw= github.com/caarlos0/go-version v0.1.1 h1:1bikKHkGGVIIxqCmufhSSs3hpBScgHGacrvsi8FuIfc= github.com/caarlos0/go-version v0.1.1/go.mod h1:Ze5Qx4TsBBi5FyrSKVg1Ibc44KGV/llAaKGp86oTwZ0= -github.com/caarlos0/log v0.4.1 h1:99+ocwxvbvQPK/effsNa4Di8MA0Xt7gBQK3vY20xG18= -github.com/caarlos0/log v0.4.1/go.mod h1:Uv+r6RfrgaRmW/xoarK1S9csv+BQgS7fZbcKYXn8ggo= +github.com/caarlos0/log v0.4.2 h1:Zi5DNvCJLU0zJAI7B3sYf2zRfHW3xS8ahKQg1eh5/LQ= +github.com/caarlos0/log v0.4.2/go.mod h1:xwKkgWnQMD39Cb/HgTWrhsG3l3MTTGwf2UZqbki2eqM= github.com/caarlos0/sshmarshal v0.1.0 h1:zTCZrDORFfWh526Tsb7vCm3+Yg/SfW/Ub8aQDeosk0I= github.com/caarlos0/testfs v0.4.4 h1:3PHvzHi5Lt+g332CiShwS8ogTgS3HjrmzZxCm6JCDr8= github.com/caarlos0/testfs v0.4.4/go.mod h1:bRN55zgG4XCUVVHZCeU+/Tz1Q6AxEJOEJTliBy+1DMk= @@ -792,7 +1006,7 @@ github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iyoHGPf5w4= github.com/charithe/durationcheck v0.0.10/go.mod h1:bCWXb7gYRysD1CU3C+u4ceO49LoGOY1C1L6uouGNreQ= -github.com/charmbracelet/keygen v0.4.2 h1:TNHua2MlXc6W1dQB2iW4msSZGKlb8RtxtmYDWUs4iRw= +github.com/charmbracelet/keygen v0.4.3 h1:ywOZRwkDlpmkawl0BgLTxaYWDSqp6Y4nfVVmgyyO1Mg= github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E= github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c= github.com/chavacava/garif v0.0.0-20230227094218-b8c73b2037b8 h1:W9o46d2kbNL06lq7UNDPV0zYLzkrde/bjIqO02eoll0= @@ -803,11 +1017,11 @@ github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAc github.com/chrismellard/docker-credential-acr-env v0.0.0-20220327082430-c57b701bfc08 h1:9Qh4lJ/KMr5iS1zfZ8I97+3MDpiKjl+0lZVUNBhdvRs= github.com/chrismellard/docker-credential-acr-env v0.0.0-20220327082430-c57b701bfc08/go.mod h1:MAuu1uDJNOS3T3ui0qmKdPUwm59+bO19BbTph2wZafE= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY= +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.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic= +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 v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc= github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= @@ -818,7 +1032,6 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= @@ -833,6 +1046,9 @@ github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230112175826-46e39c7b9b43/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230310173818-32f1caf87195/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= @@ -996,13 +1212,13 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dgryski/go-sip13 v0.0.0-20200911182023-62edffca9245/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/digitalocean/godo v1.78.0/go.mod h1:GBmu8MkjZmNARE7IXRPmkbbnocNN8+uBm0xbEVw2LCs= -github.com/digitalocean/godo v1.95.0/go.mod h1:NRpFznZFvhHjBoqZAaOD3khVzsJ3EibzKqFL4R60dmA= +github.com/digitalocean/godo v1.98.0/go.mod h1:NRpFznZFvhHjBoqZAaOD3khVzsJ3EibzKqFL4R60dmA= github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U= github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= -github.com/disgoorg/disgo v0.16.3 h1:9wI7ZTL/RTJlaTCb2T0DviPvXgpDTNmBk4wGnxIo5Ko= -github.com/disgoorg/disgo v0.16.3/go.mod h1:hUkznOmm+f+owh/MuOBX0sDviQV5cL0FqcWbpIyV1Y0= -github.com/disgoorg/json v1.0.0 h1:kDhSM661fgIuNoZF3BO5/odaR5NSq80AWb937DH+Pdo= -github.com/disgoorg/json v1.0.0/go.mod h1:BHDwdde0rpQFDVsRLKhma6Y7fTbQKub/zdGO5O9NqqA= +github.com/disgoorg/disgo v0.16.7 h1:Y4cI+DpLXCMbHJcjIFs5dspKfn4Ous4lN/et2vKgcb8= +github.com/disgoorg/disgo v0.16.7/go.mod h1:wo61ZLPn6bxHVdUODjyZ3fZTnCT7giD3uknsDUwMGn8= +github.com/disgoorg/json v1.1.0 h1:7xigHvomlVA9PQw9bMGO02PHGJJPqvX5AnwlYg/Tnys= +github.com/disgoorg/json v1.1.0/go.mod h1:BHDwdde0rpQFDVsRLKhma6Y7fTbQKub/zdGO5O9NqqA= github.com/disgoorg/log v1.2.0 h1:sqlXnu/ZKAlIlHV9IO+dbMto7/hCQ474vlIdMWk8QKo= github.com/disgoorg/log v1.2.0/go.mod h1:3x1KDG6DI1CE2pDwi3qlwT3wlXpeHW/5rVay+1qDqOo= github.com/disgoorg/snowflake/v2 v2.0.1 h1:CuUxGLwggUxEswZOmZ+mZ5i0xSumQdXW9tXW7uGqe+0= @@ -1023,7 +1239,7 @@ github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m3 github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v20.10.14+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.23+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v23.0.4+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v24.0.2+incompatible h1:eATx+oLz9WdNVkQrr0qjQ8HvRJ4bOOxfzEo8R+dA3cg= github.com/docker/docker v24.0.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= @@ -1053,13 +1269,14 @@ github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFP github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/elazarl/goproxy v0.0.0-20221015165544-a0805db90819 h1:RIB4cRk+lBqKK3Oy0r2gRX4ui7tuhiZq2SuTtTCi0/0= github.com/elliotchance/orderedmap/v2 v2.2.0 h1:7/2iwO98kYT4XkOjA9mBEIwvi4KpGB4cyHeOFOnj4Vk= github.com/elliotchance/orderedmap/v2 v2.2.0/go.mod h1:85lZyVbpGaGvHvnKa7Qhx7zncAdBIBq6u56Hb1PRU5Q= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= +github.com/emicklei/go-restful/v3 v3.10.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -1073,9 +1290,13 @@ github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go. github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= +github.com/envoyproxy/go-control-plane v0.11.0/go.mod h1:VnHyVMpzcLvCFt9yUz1UnCwHLhwx1WguiVDV7pTG/tI= +github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= +github.com/envoyproxy/protoc-gen-validate v0.10.0/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= +github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= github.com/esimonov/ifshort v1.0.4 h1:6SID4yGWfRae/M7hkVDVVyppy8q/v9OuxNdmjLQStBA= github.com/esimonov/ifshort v1.0.4/go.mod h1:Pe8zjlRrJ80+q2CxHLfEOfTwxCZ4O+MuhcHcfgNWTk0= github.com/ettle/strcase v0.1.1 h1:htFueZyVeE1XNnMEfbqp5r67qAN/4r6ya1ysq8Q+Zcw= @@ -1093,6 +1314,7 @@ github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= @@ -1102,9 +1324,10 @@ github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSw github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/firefart/nonamedreturns v1.0.4 h1:abzI1p7mAEPYuR4A+VLKn4eNDOycjYo2phmY9sfv40Y= github.com/firefart/nonamedreturns v1.0.4/go.mod h1:TDhe/tjI1BXo48CmYbUduTV7BdIga8MAO/xbKdcVsGI= +github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= github.com/flynn/go-docopt v0.0.0-20140912013429-f6dd2ebbb31e/go.mod h1:HyVoz1Mz5Co8TFO8EupIdlcpwShBmY98dkT2xeHkvEI= -github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= @@ -1130,19 +1353,21 @@ github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeME github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U= -github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= -github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= github.com/go-critic/go-critic v0.7.0 h1:tqbKzB8pqi0NsRZ+1pyU4aweAF7A7QN0Pi4Q02+rYnQ= github.com/go-critic/go-critic v0.7.0/go.mod h1:moYzd7GdVXE2C2hYTwd7h0CPcqlUeclsyBRwMa38v64= -github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= -github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= -github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= -github.com/go-git/go-billy/v5 v5.3.1 h1:CPiOUAzKtMRvolEKw+bG1PLRpT7D3LIs3/3ey4Aiu34= -github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= -github.com/go-git/go-git-fixtures/v4 v4.2.1 h1:n9gGL1Ct/yIw+nfsfr8s4+sbhT+Ncu2SubfXjIWgci8= -github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0= -github.com/go-git/go-git/v5 v5.4.2 h1:BXyZu9t0VkbiHtqrsvdq39UDhGJTl1h55VW6CSC4aY4= -github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc= +github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= +github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= +github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= +github.com/go-git/go-billy/v5 v5.4.1 h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4= +github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f h1:Pz0DHeFij3XFhoBRGUDPzSJ+w2UcK5/0JvF8DRI58r8= +github.com/go-git/go-git/v5 v5.7.0 h1:t9AudWVLmqzlo+4bqdf7GY+46SUuRsx59SboFxkq2aE= +github.com/go-git/go-git/v5 v5.7.0/go.mod h1:coJHKEOk5kUClpsNlXrUvPrDxY3w3gjHvhcZd8Fodw8= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -1153,10 +1378,13 @@ github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEai github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= +github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= @@ -1188,8 +1416,9 @@ github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL9 github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= -github.com/go-openapi/jsonreference v0.20.1 h1:FBLnyygC4/IZZr893oiomc9XaghoveYTrLC1F86HID8= github.com/go-openapi/jsonreference v0.20.1/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= +github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= +github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/loads v0.21.1/go.mod h1:/DtAMXXneXFjbQMGEtbamCZb+4x7eGwkvZCvBmwUG+g= github.com/go-openapi/loads v0.21.2 h1:r2a/xFIYeZ4Qd2TnGpWDIQNcP80dIaZgf704za8enro= github.com/go-openapi/loads v0.21.2/go.mod h1:Jq58Os6SSGz0rzh62ptiu8Z31I+OTHqmULx5e/gJbNw= @@ -1202,6 +1431,7 @@ github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8 github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= github.com/go-openapi/spec v0.20.6/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= github.com/go-openapi/spec v0.20.7/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= +github.com/go-openapi/spec v0.20.8/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= github.com/go-openapi/spec v0.20.9 h1:xnlYNQAwKd2VQRRfwTEI0DcK+2cbuvI/0c7jx3gA8/8= github.com/go-openapi/spec v0.20.9/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= github.com/go-openapi/strfmt v0.21.0/go.mod h1:ZRQ409bWMj+SOgXofQAGTIo2Ebu72Gs+WaRADcS5iNg= @@ -1222,13 +1452,16 @@ github.com/go-openapi/validate v0.21.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUri github.com/go-openapi/validate v0.22.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= github.com/go-openapi/validate v0.22.1 h1:G+c2ub6q47kfX1sOBLwIQwzBVt8qmOAARyo/9Fqs9NU= github.com/go-openapi/validate v0.22.1/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= +github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= +github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= -github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I= +github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= @@ -1288,6 +1521,7 @@ github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJA github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/goccy/go-yaml v1.9.5/go.mod h1:U/jl18uSupI5rdI2jmuCswEA2htH9eXfferR3KfscvA= github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= @@ -1323,6 +1557,7 @@ github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EO github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= +github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -1388,7 +1623,9 @@ github.com/google/addlicense v1.1.1/go.mod h1:Sm/DHu7Jk+T5miFHHehdIjbi4M5+dJDRS3 github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= +github.com/google/gnostic v0.6.9/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -1408,15 +1645,16 @@ github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= github.com/google/go-containerregistry v0.15.2 h1:MMkSh+tjSdnmJZO7ljvEqV1DjfekB6VUEAZgy3a+TQE= github.com/google/go-containerregistry v0.15.2/go.mod h1:wWK+LnOv4jXMM23IT/F1wdYftGWGr47Is8CG+pmHK1Q= -github.com/google/go-github/v50 v50.2.0 h1:j2FyongEHlO9nxXLc+LP3wuBSVU9mVxfpdYUexMpIfk= -github.com/google/go-github/v50 v50.2.0/go.mod h1:VBY8FB6yPIjrtKhozXv4FQupxKLS6H4m6xFZlT43q8Q= +github.com/google/go-github/v53 v53.2.0 h1:wvz3FyF53v4BK+AsnvCmeNhf8AkTaeh2SoYu/XUvTtI= +github.com/google/go-github/v53 v53.2.0/go.mod h1:XhFRObz+m/l+UCm9b7KSIC3lT3NWSXGt7mOsAWEloao= +github.com/google/go-pkcs11 v0.2.0/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/go-replayers/grpcreplay v1.1.0 h1:S5+I3zYyZ+GQz68OfbURDdt/+cSMqCK1wrvNx7WBzTE= github.com/google/go-replayers/grpcreplay v1.1.0/go.mod h1:qzAvJ8/wi57zq7gWqaE6AwLM6miiXUQwP1S+I9icmhk= -github.com/google/go-replayers/httpreplay v1.1.1 h1:H91sIMlt1NZzN7R+/ASswyouLJfW0WLW7fhyUFvDEkY= -github.com/google/go-replayers/httpreplay v1.1.1/go.mod h1:gN9GeLIs7l6NUoVaSSnv2RiqK1NiwAmD0MrKeC9IIks= +github.com/google/go-replayers/httpreplay v1.2.0 h1:VM1wEyyjaoU53BwrOnaf9VhAyQQEEioJvFYxYcLRKzk= +github.com/google/go-replayers/httpreplay v1.2.0/go.mod h1:WahEFFZZ7a1P4VM1qEeHy+tME4bwyqPcwWbNlUI1Mcg= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -1448,11 +1686,13 @@ github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= -github.com/google/pprof v0.0.0-20230111200839-76d1ae5aea2b h1:8htHrh2bw9c7Idkb7YNac+ZpTqLMjRpI+FWu51ltaQc= -github.com/google/pprof v0.0.0-20230111200839-76d1ae5aea2b/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo= +github.com/google/pprof v0.0.0-20230406165453-00490a63f317 h1:hFhpt7CTmR3DX+b4R19ydQFtofxT0Sv3QsKNMVQYTMQ= +github.com/google/pprof v0.0.0-20230406165453-00490a63f317/go.mod h1:79YE0hCXdHag9sBkw2o+N/YnZtTkXi0UT9Nnixa5eYk= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.3 h1:FAgZmpLl/SXurPEZyCMPBIiiYeTbqfjlbdnCNTAkbGE= +github.com/google/s2a-go v0.1.0/go.mod h1:OJpEgntRZo8ugHpF9hkoLJbS5dSI20XZeXJ9JVywLlM= github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= +github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= +github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2 h1:SJ+NtwL6QaZ21U+IrK7d0gGgpjGGvd2kz+FzTHVzdqI= github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2/go.mod h1:Tv1PlzqC9t8wNnpPdctvtSUOPUUg4SHeE6vR1Ir2hmg= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= @@ -1469,8 +1709,10 @@ github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99 github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= -github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.2.5 h1:UR4rDjcgpgEnqpIEvkiqTYKBCKLNmlge2eVjoZfySzM= +github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= @@ -1481,27 +1723,31 @@ github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= -github.com/googleapis/gax-go/v2 v2.8.0 h1:UBtEZqx1bjXtOQ5BVTkuYghXrr3N4V123VKJK67vJZc= +github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= +github.com/googleapis/gax-go/v2 v2.9.1/go.mod h1:4FG3gMrVZlyMp5itSYKMU9z/lBE7+SbnUOvzH2HqbEY= +github.com/googleapis/gax-go/v2 v2.10.0/go.mod h1:4UOEnMCrxsSqQ940WnTiD6qJ63le2ev3xfyagutxiPw= +github.com/googleapis/gax-go/v2 v2.11.0 h1:9V9PWXEsWnPpQhu/PeQIkS4eGzMlTLGgt80cUUI8Ki4= +github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gophercloud/gophercloud v0.24.0/go.mod h1:Q8fZtyi5zZxPS/j9aj3sSxtvj41AdQMDwyo1myduD5c= -github.com/gophercloud/gophercloud v1.1.1/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= +github.com/gophercloud/gophercloud v1.3.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gopherjs/gopherjs v1.17.2 h1:fQnZVsXk8uxXIStYb0N4bGk7jeyTalG/wsZjQ25dO0g= github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28 h1:9alfqbrhuD+9fLZ4iaAVwhlp5PEhmnBt7yvK2Oy5C1U= github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= -github.com/goreleaser/chglog v0.4.2 h1:afmbT1d7lX/q+GF8wv3a1Dofs2j/Y9YkiCpGemWR6mI= -github.com/goreleaser/chglog v0.4.2/go.mod h1:u/F03un4hMCQrp65qSWCkkC6T+G7YLKZ+AM2mITE47s= +github.com/goreleaser/chglog v0.5.0 h1:Sk6BMIpx8+vpAf8KyPit34OgWui8c7nKTMHhYx88jJ4= +github.com/goreleaser/chglog v0.5.0/go.mod h1:Ri46M3lrMuv76FHszs3vtABR8J8k1w9JHYAzxeeOl28= github.com/goreleaser/fileglob v1.3.0 h1:/X6J7U8lbDpQtBvGcwwPS6OpzkNVlVEsFUVRx9+k+7I= github.com/goreleaser/fileglob v1.3.0/go.mod h1:Jx6BoXv3mbYkEzwm9THo7xbr5egkAraxkGorbJb4RxU= -github.com/goreleaser/goreleaser v1.18.2 h1:qeNrKKVOHWEs1+/+a6jwASj7g9yg1R4vfLVlo0Beyro= -github.com/goreleaser/goreleaser v1.18.2/go.mod h1:CfWAXthyGOTzUgubl1FdAtkAgSW69XuRHF6KcA9IrLc= -github.com/goreleaser/nfpm/v2 v2.29.0 h1:QW7MD5Od8ePAWqvC+kGQiF8OH5JkSKV+HcblcT0NX6A= -github.com/goreleaser/nfpm/v2 v2.29.0/go.mod h1:+O8Rgz7geEXG1ym2Yl8CGPg5nP2LRuCgkBK6CQF+Q3c= +github.com/goreleaser/goreleaser v1.19.1 h1:MVAFo62jkj6/JflxruefIwfFTqNTeNtkT12Hab1o2Lk= +github.com/goreleaser/goreleaser v1.19.1/go.mod h1:94HBElBUlnXzMZi9Yae1ev8WGeeh21RrxNWYBJW+cxU= +github.com/goreleaser/nfpm/v2 v2.31.0 h1:cb8QSZ7tPnUlWPEdYcWwNWXiRvmVPznJ6LYiOIdOJ6Y= +github.com/goreleaser/nfpm/v2 v2.31.0/go.mod h1:qlMQCbOTapyqRss16vAPwK/WAjWKdt0gY3vh4wipm8I= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= @@ -1539,16 +1785,16 @@ github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.1/go.mod h1:G+WkljZi4mflcqVxYSgvt8MNctRQHjEH8ubKtt1Ka3w= github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= -github.com/hanwen/go-fuse/v2 v2.2.0/go.mod h1:B1nGE/6RBFyBRC1RRnf23UpwCdyJ31eukw34oAKukAc= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.15.2/go.mod h1:7pdNwVWBBHGiCxa9lAszqCJMbfTISJ7oMftp8+UGV08= +github.com/hanwen/go-fuse/v2 v2.3.0/go.mod h1:xKwi1cF7nXAOBCXujD5ie0ZKsxc8GGSA1rlMJc+8IJs= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= -github.com/hashicorp/consul/api v1.18.0/go.mod h1:owRRGJ9M5xReDC5nfT8FTJrNAPbT4NM6p/k+d03q2v4= +github.com/hashicorp/consul/api v1.20.0/go.mod h1:nR64eD44KQ59Of/ECwt2vUmIK2DKsDzAwTmwmLl8Wpo= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= -github.com/hashicorp/consul/sdk v0.13.0/go.mod h1:0hs/l5fOVhJy/VdcoaNqUSi2AUs95eF5WKtv+EYIQqE= +github.com/hashicorp/consul/sdk v0.13.1/go.mod h1:SW/mM4LbKfqmMvcFu8v+eiQQ7oitXEFeiBe9StxERb0= github.com/hashicorp/cronexpr v1.1.1/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -1563,7 +1809,8 @@ github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39 github.com/hashicorp/go-hclog v0.12.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v0.16.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v1.3.1 h1:vDwF1DFNZhntP4DAjuTpOw3uEgMUpXh1pB5fW9DqHpo= +github.com/hashicorp/go-hclog v1.4.0 h1:ctuWFGrhFha8BnnzxqeRGidlEcQkDyL5u8J8t5eA11I= +github.com/hashicorp/go-hclog v1.4.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.2.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= @@ -1604,21 +1851,21 @@ github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOn github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/memberlist v0.3.1/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0= -github.com/hashicorp/nomad/api v0.0.0-20230124213148-69fd1a0e4bf7/go.mod h1:xYYd4dybIhRhhzDemKx7Ddt8CvCosgrEek8YM7/cF0A= +github.com/hashicorp/nomad/api v0.0.0-20230418003350-3067191c5197/go.mod h1:2TCrNvonL09r7EiQ6M2rNt+Cmjbn1QbzchFoTWJFpj4= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hashicorp/serf v0.9.7/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= github.com/hetznercloud/hcloud-go v1.33.1/go.mod h1:XX/TQub3ge0yWR2yHWmnDVIrB+MQbda1pHxkUmDlUME= -github.com/hetznercloud/hcloud-go v1.39.0/go.mod h1:mepQwR6va27S3UQthaEPGS86jtzSY9xWL1e9dyxXpgA= +github.com/hetznercloud/hcloud-go v1.42.0/go.mod h1:YADL8AbmQYH0Eo+1lkuyoc8LutT0UeMvaKP47nNUb+Y= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/honeycombio/beeline-go v1.10.0 h1:cUDe555oqvw8oD76BQJ8alk7FP0JZ/M/zXpNvOEDLDc= github.com/honeycombio/libhoney-go v1.16.0 h1:kPpqoz6vbOzgp7jC6SR7SkNj7rua7rgxvznI6M3KdHc= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw= -github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/huandu/xstrings v1.3.3 h1:/Gcsuc1x8JVbJ9/rlye4xZnVAbEkGauT8lbebqcQws4= +github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/hudl/fargo v1.4.0/go.mod h1:9Ai6uvFy5fQNq6VPKtg+Ceq1+eTY4nKUlR2JElEOcDo= github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= github.com/iancoleman/orderedmap v0.2.0 h1:sq1N/TFpYH++aViPcaKjys3bDClUEU7s5B+z6jq8pNA= @@ -1627,15 +1874,16 @@ github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47 github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= -github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= +github.com/ianlancetaylor/demangle v0.0.0-20220517205856-0058ec4f073c/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= -github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= +github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= +github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= +github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= @@ -1643,7 +1891,7 @@ github.com/influxdata/influxdb1-client v0.0.0-20200827194710-b269163b24ab/go.mod github.com/intel/goresctrl v0.2.0/go.mod h1:+CZdzouYFn5EsxgqAQTEzMfwKwuc0fVdMrT9FCCAVRQ= github.com/invopop/jsonschema v0.7.0 h1:2vgQcBz1n256N+FpX3Jq7Y17AjYt46Ig3zIWyy770So= github.com/invopop/jsonschema v0.7.0/go.mod h1:O9uiLokuu0+MGFlyiaqtWxwqJm41/+8Nj0lD7A36YH0= -github.com/ionos-cloud/sdk-go/v6 v6.1.3/go.mod h1:Ox3W0iiEz0GHnfY9e5LmAxwklsxguuNFEUSu0gVRTME= +github.com/ionos-cloud/sdk-go/v6 v6.1.6/go.mod h1:EzEgRIDxBELvfoa/uBN0kOQaqovLjUWEB7iW4/Q+t4k= github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= github.com/j-keck/arping v1.0.2/go.mod h1:aJbELhR92bSk7tp79AWM/ftfc90EfEi2bQJrbBFOsPw= github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= @@ -1655,7 +1903,7 @@ github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsU github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o= github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY= github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= -github.com/jackc/pgconn v1.13.0/go.mod h1:AnowpAqO4CMIIJNZl2VJp+KrkAZciAkhEl0W0JIobpI= +github.com/jackc/pgconn v1.14.0/go.mod h1:9mBNlny0UvkgJdCDvdVHYSjI+8tD2rnKK69Wz8ti++E= github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE= github.com/jackc/pgmock v0.0.0-20201204152224-4fe30f7445fd/go.mod h1:hrBW0Enj2AZTNpt/7Y5rr2xe/9Mn757Wtb2xeBzPv2c= @@ -1668,23 +1916,25 @@ github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvW github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgproto3/v2 v2.3.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.3.2/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM= -github.com/jackc/pgtype v1.12.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= +github.com/jackc/pgtype v1.14.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs= -github.com/jackc/pgx/v4 v4.17.2/go.mod h1:lcxIZN44yMIrWI78a5CpucdD14hX0SBDbNRvjDBItsw= +github.com/jackc/pgx/v4 v4.18.1/go.mod h1:FydWkUyadDmdNH/mHnGob881GawxeEm7TcMCzkb+qQE= github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle v1.3.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jarcoal/httpmock v1.3.0 h1:2RJ8GP0IIaWwcC9Fp2BmVi8Kog3v2Hn7VXM3fTd+nuc= +github.com/jarcoal/httpmock v1.3.0/go.mod h1:3yb8rc4BI7TCBhFY8ng0gjuLKJNquuDNiPaZjnENuYg= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= @@ -1729,12 +1979,13 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/julz/importas v0.1.0 h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY= github.com/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0= +github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/junk1tm/musttag v0.5.0 h1:bV1DTdi38Hi4pG4OVWa7Kap0hi0o7EczuK6wQt9zPOM= github.com/junk1tm/musttag v0.5.0/go.mod h1:PcR7BA+oREQYvHwgjIDmw3exJeds5JzRcvEJTfjrA0M= github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= -github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= @@ -1746,14 +1997,16 @@ github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkHAIKE/contextcheck v1.1.4 h1:B6zAaLhOEEcjvUgIYEqystmnFk1Oemn8bvJhbt0GMb8= github.com/kkHAIKE/contextcheck v1.1.4/go.mod h1:1+i/gWqokIa+dm31mqGLZhZJ7Uh44DJGZVmr6QRBNJg= +github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.15.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= -github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= +github.com/klauspost/compress v1.16.6 h1:91SKEy4K37vkp255cJ8QesJhjyRO0hn9i9G0GoUwLsk= +github.com/klauspost/compress v1.16.6/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU= github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= @@ -1797,9 +2050,9 @@ github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/linode/linodego v1.4.0/go.mod h1:PVsRxSlOiJyvG4/scTszpmZDTdgS+to3X6eS8pRrWI8= -github.com/linode/linodego v1.12.0/go.mod h1:NJlzvlNtdMRRkXb0oN6UWzUkj6t+IBsyveHgZ5Ppjyk= +github.com/linode/linodego v1.16.1/go.mod h1:aESRAbpLY9R6IA1WGAWHikRI9DU9Lhesapv1MhKmPHM= github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3/go.mod h1:3r6x7q95whyfWQpmGZTu3gk3v2YkMi05HEzl7Tf7YEo= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= @@ -1807,6 +2060,7 @@ github.com/lufeee/execinquery v1.2.1 h1:hf0Ems4SHcUGBxpGN7Jz78z1ppVkP/837ZlETPCE github.com/lufeee/execinquery v1.2.1/go.mod h1:EC7DrEKView09ocscGHC+apXMIaorh4xqSxS/dy8SbM= github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= +github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= @@ -1850,8 +2104,9 @@ github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOA github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= +github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-mastodon v0.0.6 h1:lqU1sOeeIapaDsDUL6udDZIzMb2Wqapo347VZlaOzf0= github.com/mattn/go-mastodon v0.0.6/go.mod h1:cg7RFk2pcUfHZw/IvKe1FUzmlq5KnLFqs7eV2PHplV8= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= @@ -1862,30 +2117,35 @@ github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= +github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/matttproud/golang_protobuf_extensions v1.0.2/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/maxatome/go-testdeep v1.12.0/go.mod h1:lPZc/HAcJMP92l7yI6TRz1aZN5URwUBUAfUNvrclaNM= github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= github.com/mbilski/exhaustivestruct v1.2.0 h1:wCBmUnSYufAHO6J4AVWY6ff+oxWxsVFrwgOdMUQePUo= github.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aksxSUOUy+nvtVEfzXc= github.com/mgechev/revive v1.3.1 h1:OlQkcH40IB2cGuprTPcjB0iIUddgVZgGmDX3IAMR8D4= github.com/mgechev/revive v1.3.1/go.mod h1:YlD6TTWl2B8A103R9KWJSPVI9DrEf+oqr15q21Ld+5I= github.com/microsoft/ApplicationInsights-Go v0.4.4/go.mod h1:fKRUseBqkw6bDiXTs3ESTiU/4YTIHsQS4W3fP2ieF4U= -github.com/microsoft/go-mssqldb v0.18.0/go.mod h1:ukJCBnnzLzpVF0qYRT+eg1e+eSwjeQ7IvenUv8QPook= +github.com/microsoft/go-mssqldb v0.21.0/go.mod h1:+4wZTUnz/SV6nffv+RRRB/ss8jPng5Sho2SmM1l2ts4= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= github.com/miekg/dns v1.1.48/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= -github.com/miekg/dns v1.1.50/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= +github.com/miekg/dns v1.1.53/go.mod h1:uInx36IzPl7FYnDcMeVWxj9byh7DutNykX4G9Sj60FY= github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= +github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= +github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= +github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= @@ -1905,6 +2165,7 @@ github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= +github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= @@ -1912,6 +2173,7 @@ github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0Gq github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= +github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= github.com/moby/sys/signal v0.6.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ= github.com/moby/sys/symlink v0.2.0/go.mod h1:7uZVF2dqJjG/NsClqul95CqKOBRQyYSNnJ6BMgR/gFs= @@ -1927,6 +2189,7 @@ github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjY github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/montanaflynn/stats v0.6.6/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= +github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= github.com/moricho/tparallel v0.3.1 h1:fQKD4U1wRMAYNngDonW5XupoB/ZGJHdpzrWqgyg9krA= github.com/moricho/tparallel v0.3.1/go.mod h1:leENX2cUv7Sv2qDgdi0D0fCftN8fRC67Bcn8pqzeYNI= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= @@ -1942,8 +2205,8 @@ github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= github.com/muesli/roff v0.1.0 h1:YD0lalCotmYuF5HhZliKWlIx7IEhiXeSfq7hNjFqGF8= github.com/muesli/roff v0.1.0/go.mod h1:pjAHQM9hdUUwm/krAfrLGgJkXJ+YuhtsfZ42kieB2Ig= -github.com/muesli/termenv v0.15.1 h1:UzuTb/+hhlBugQz28rpzey4ZuKcZ03MeKsoG7IJZIxs= -github.com/muesli/termenv v0.15.1/go.mod h1:HeAQPTzpfs016yGtA4g00CsdYnVLJvxsS4ANqrZs2sQ= +github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= +github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -2063,7 +2326,7 @@ github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJ github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= -github.com/ovh/go-ovh v1.3.0/go.mod h1:AxitLZ5HBRPyUd+Zl60Ajaag+rNTdVXWIkzfrVuTXWA= +github.com/ovh/go-ovh v1.4.1/go.mod h1:6bL6pPyUT7tBfI0pqOegJgRjgjuO+mOo+MyXd1EEC0M= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= @@ -2078,7 +2341,13 @@ github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZ github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= github.com/performancecopilot/speed/v4 v4.0.0/go.mod h1:qxrSyuDGrTOWfV+uKRFhfxw6h/4HXRGUiZiufxo49BM= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= +github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= +github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= +github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= +github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= @@ -2114,6 +2383,7 @@ github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqr github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_golang v1.13.0/go.mod h1:vTeo+zgvILHsnnj/39Ou/1fPN5nJFOEMgftOUOmlvYQ= github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= +github.com/prometheus/client_golang v1.15.0/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= github.com/prometheus/client_golang v1.15.1 h1:8tXpTmJbyH5lydzFPoxSIJ0J46jdh3tylbvM1xCv0LI= github.com/prometheus/client_golang v1.15.1/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= @@ -2138,7 +2408,7 @@ github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+ github.com/prometheus/common v0.34.0/go.mod h1:gB3sOl7P0TvJabZpLY5uQMpUqRCPPCyRLCZYc7JZTNE= github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= github.com/prometheus/common v0.38.0/go.mod h1:MBXfmBQZrK5XpbCkjofnXs96LD2QQ7fEq4C0xjC/yec= -github.com/prometheus/common v0.39.0/go.mod h1:6XBZ7lYdLCbkAVhwRsWTZn+IN5AB9F/NXd5w0BbEX0Y= +github.com/prometheus/common v0.41.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= github.com/prometheus/common/assets v0.1.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= @@ -2146,6 +2416,7 @@ github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwB github.com/prometheus/common/sigv4 v0.1.0/go.mod h1:2Jkxxk9yYvCkE5G1sQT7GuEXm57JrvHu9k5YwTjsNtI= github.com/prometheus/exporter-toolkit v0.7.1/go.mod h1:ZUBIj498ePooX9t/2xtDjeQYwvRpiPP2lh5u4iblj2g= github.com/prometheus/exporter-toolkit v0.8.2/go.mod h1:00shzmJL7KxcsabLWcONwpyNEuWhREOnFqZW7vadFS0= +github.com/prometheus/exporter-toolkit v0.9.1/go.mod h1:iFlTmFISCix0vyuyBmm0UqOUCTao9+RsAsKJP3YM9ec= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -2162,7 +2433,7 @@ github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0ua github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= github.com/prometheus/prometheus v0.35.0/go.mod h1:7HaLx5kEPKJ0GDgbODG0fZgXbQ8K/XjZNJXQmbmgQlY= -github.com/prometheus/prometheus v0.42.0/go.mod h1:Pfqb/MLnnR2KK+0vchiaH39jXxvLMBk+3lnIGP4N7Vk= +github.com/prometheus/prometheus v0.44.0/go.mod h1:aPsmIK3py5XammeTguyqTmuqzX/jeCdyOWWobLHNKQg= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/quasilyte/go-ruleguard v0.3.19 h1:tfMnabXle/HzOb5Xe9CUZYWXKfkS1KwRmZyPmD9nVcc= github.com/quasilyte/go-ruleguard v0.3.19/go.mod h1:lHSn69Scl48I7Gt9cX3VrbsZYvYiBYszZOZW4A+oTEw= @@ -2174,6 +2445,7 @@ github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4l github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ= github.com/rakyll/embedmd v0.0.0-20171029212350-c8060a0752a2/go.mod h1:7jOTMgqac46PZcF54q6l2hkLEG8op93fZu61KmxWDV4= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.2 h1:YwD0ulJSJytLpiaWua0sBDusfsCZohxjxzVTYjwxfV8= @@ -2186,6 +2458,7 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= @@ -2193,6 +2466,8 @@ github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThC github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= +github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= github.com/ryancurrah/gomodguard v1.3.0 h1:q15RT/pd6UggBXVBuLps8BXRvl5GPBcwVA7BJHMLuTw= github.com/ryancurrah/gomodguard v1.3.0/go.mod h1:ggBxb3luypPEzqVtq33ee7YSN35V28XeGnid8dnni50= github.com/ryanrolds/sqlclosecheck v0.4.0 h1:i8SX60Rppc1wRuyQjMciLqIzV3xnoHB7/tXbr6RGYNI= @@ -2212,7 +2487,7 @@ github.com/sashamelentyev/usestdlibvars v1.23.0 h1:01h+/2Kd+NblNItNeux0veSL5cBF1 github.com/sashamelentyev/usestdlibvars v1.23.0/go.mod h1:YPwr/Y1LATzHI93CqoPUN/2BzGQ/6N/cl/KwgR0B/aU= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.12/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.15/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= @@ -2221,13 +2496,13 @@ github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921/go.mod github.com/secure-systems-lab/go-securesystemslib v0.3.1/go.mod h1:o8hhjkbNl2gOamKUA/eNW3xUrntHT9L4W89W1nfj43U= github.com/securego/gosec/v2 v2.15.0 h1:v4Ym7FF58/jlykYmmhZ7mTm7FQvN/setNm++0fgIAtw= github.com/securego/gosec/v2 v2.15.0/go.mod h1:VOjTrZOkUtSDt2QLSJmQBMWnvwiQPEjg0l+5juIqGk8= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU= github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs= -github.com/shoenig/test v0.6.0/go.mod h1:xYtyGBC5Q3kzCNyJg/SjgNpfAa2kvmgA0i5+lQso8x0= +github.com/shoenig/test v0.6.3/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= +github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= @@ -2257,13 +2532,15 @@ github.com/sivchari/nosnakecase v1.7.0 h1:7QkpWIRMe8x25gckkFd2A5Pi6Ymo0qgr4JrhGt github.com/sivchari/nosnakecase v1.7.0/go.mod h1:CwDzrzPea40/GB6uynrNLiorAlgFRvRbFSgJx2Gs+QY= github.com/sivchari/tenv v1.7.1 h1:PSpuD4bu6fSmtWMxSGWcvqUUgIn7k3yOJhOIzVWn8Ak= github.com/sivchari/tenv v1.7.1/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg= +github.com/skeema/knownhosts v1.1.1 h1:MTk78x9FPgDFVFkDLTrsnnfCJl7g1C/nnKvePgrIngE= +github.com/skeema/knownhosts v1.1.1/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo= github.com/slack-go/slack v0.12.2 h1:x3OppyMyGIbbiyFhsBmpf9pwkUzMhthJMRNmNlA4LaQ= github.com/slack-go/slack v0.12.2/go.mod h1:hlGi5oXA+Gt+yWTPP0plCdRKmjsDxecdHxYQdlMQKOw= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/assertions v1.2.0 h1:42S6lae5dvLc7BrLu/0ugRtcFVjoJNMC/N3yZFZkDFs= +github.com/smartystreets/assertions v1.13.1 h1:Ef7KhSmjZcK6AVf9YbJdvPYG9avaF0ZxudX+ThRdWfU= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/smartystreets/goconvey v1.7.2 h1:9RBaZCeXEQ3UselpuwUQHltGVXvdwm6cv1hgR6gDIPg= +github.com/smartystreets/goconvey v1.8.0 h1:Oi49ha/2MURE0WexF052Z0m+BNSGirfjg5RL+JXWq3w= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/sonatard/noctx v0.0.2 h1:L7Dz4De2zDQhW8S0t+KUjY0MAQJd6SgVwhzNIc4ok00= @@ -2332,12 +2609,14 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= @@ -2414,11 +2693,10 @@ github.com/willf/bitset v1.1.11-0.20200630133818-d5bec3311243/go.mod h1:RjeCKbqT github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= github.com/withfig/autocomplete-tools/integrations/cobra v1.2.1 h1:+dBg5k7nuTE38VVdoroRsT0Z88fmvdYrI2EjzJst35I= github.com/withfig/autocomplete-tools/integrations/cobra v1.2.1/go.mod h1:nmuySobZb4kFgFy6BptpXp/BBw+xFSyvVPP6auoJB4k= -github.com/xanzy/go-gitlab v0.83.0 h1:37p0MpTPNbsTMKX/JnmJtY8Ch1sFiJzVF342+RvZEGw= -github.com/xanzy/go-gitlab v0.83.0/go.mod h1:5ryv+MnpZStBH8I/77HuQBsMbBGANtVpLWC15qOjWAw= -github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= -github.com/xanzy/ssh-agent v0.3.1 h1:AmzO1SSWxw73zxFZPRwaMN1MohDw8UyHnmuxyceTEGo= -github.com/xanzy/ssh-agent v0.3.1/go.mod h1:QIE4lCeL7nkC25x+yA3LBIYfwCc1TFziCtG7cBAac6w= +github.com/xanzy/go-gitlab v0.86.0 h1:jR8V9cK9jXRQDb46KOB20NCF3ksY09luaG0IfXE6p7w= +github.com/xanzy/go-gitlab v0.86.0/go.mod h1:5ryv+MnpZStBH8I/77HuQBsMbBGANtVpLWC15qOjWAw= +github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= +github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= @@ -2430,6 +2708,9 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHo github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/xhit/go-str2duration v1.2.0/go.mod h1:3cPSlfZlUHVlneIVfePFWcJZsuwf+P1v2SRTV4cUmp4= +github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= @@ -2449,6 +2730,8 @@ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5t github.com/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= gitlab.com/bosi/decorder v0.2.3 h1:gX4/RgK16ijY8V+BRQHAySfQAb354T7/xQpDB2n10P0= gitlab.com/bosi/decorder v0.2.3/go.mod h1:9K1RB5+VPNQYtXtTDAzd2OEftsZb1oV0IrJrzChSdGE= @@ -2493,35 +2776,35 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.2 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.28.0/go.mod h1:vEhqr0m4eTc+DWxfsXoXue2GBgV2uUwVznkGIHW/e5w= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.31.0/go.mod h1:PFmBsWbldL1kiWZk9+0LBZz2brhByaGsvp6pRICMlPE= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.37.0/go.mod h1:+ARmXlUlc51J7sZeCBkBJNdHGySrdOzgzxp6VWRWM1U= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.40.0/go.mod h1:pcQ3MM3SWvrA71U4GDqv9UFDJ3HQsW7y5ZO3tDTlUdI= go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs= go.opentelemetry.io/otel v1.6.0/go.mod h1:bfJD2DZVw0LBxghOTlgnlI0CV3hLDu9XF/QKOUXMTQQ= go.opentelemetry.io/otel v1.6.1/go.mod h1:blzUabWHkX6LJewxvadmzafgh/wnvBSDBdOuwkAtrWQ= go.opentelemetry.io/otel v1.11.1/go.mod h1:1nNhXBbWSD0nsL38H6btgnFN2k4i0sNLHNNMZMSbUGE= -go.opentelemetry.io/otel v1.11.2/go.mod h1:7p4EUV+AqgdlNV9gL97IgUZiVR3yrFXYo53f9BM3tRI= +go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU= go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.3.0/go.mod h1:VpP4/RMn8bv8gNo9uK7/IMY4mtWLELsS+JIP0inH0h4= go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.6.1/go.mod h1:NEu79Xo32iVb+0gVNV8PMd7GoWqnyDXRlj04yFjqz40= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.11.2/go.mod h1:rqbht/LlhVBgn5+k3M5QK96K5Xb0DvXpMJ5SFQpY6uw= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0/go.mod h1:UFG7EBMRdXyFstOwH028U0sVf+AvukSGhF0g8+dmNG8= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.3.0/go.mod h1:hO1KLR7jcKaDDKDkvI9dP/FIhpmna5lkqPUQdEjFAM8= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.6.1/go.mod h1:YJ/JbY5ag/tSQFXzH3mtDmHqzF3aFn3DI/aB1n7pt4w= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.11.2/go.mod h1:5Qn6qvgkMsLDX+sYK64rHb1FPhpn0UtxF+ouX1uhyJE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0/go.mod h1:HrbCVv40OOLTABmOn1ZWty6CHXkU8DK/Urc43tHug70= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.3.0/go.mod h1:keUU7UfnwWTWpJ+FWnyqmogPa82nuU5VUANFq49hlMY= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.6.1/go.mod h1:UJJXJj0rltNIemDMwkOJyggsvyMG9QHfJeFH0HS5JjM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.11.2/go.mod h1:jWZUM2MWhWCJ9J9xVbRx7tzK1mXKpAlze4CeulycwVY= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0/go.mod h1:5w41DY6S9gZrbjuq6Y+753e96WfPha5IcsOSZTtullM= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.3.0/go.mod h1:QNX1aly8ehqqX1LEa6YniTU7VY9I6R3X/oPxhGdTceE= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.6.1/go.mod h1:DAKwdo06hFLc0U88O10x4xnb5sc7dDRDqRuiN+io8JE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.11.2/go.mod h1:GZWSQQky8AgdJj50r1KJm8oiQiIPaAX7uZCFQX9GzC8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.14.0/go.mod h1:+N7zNjIJv4K+DeX67XXET0P+eIciESgaFDBqh+ZJFS4= go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= go.opentelemetry.io/otel/metric v0.28.0/go.mod h1:TrzsfQAmQaB1PDcdhBauLMk7nyyg9hm+GoQq/ekE9Iw= -go.opentelemetry.io/otel/metric v0.34.0/go.mod h1:ZFuI4yQGNCupurTXCwkeD/zHBt+C2bR7bw5JqUm/AP8= +go.opentelemetry.io/otel/metric v0.37.0/go.mod h1:DmdaHfGt54iV6UKxsV9slj2bBRJcKC1B1uvDLIioc1s= go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= go.opentelemetry.io/otel/sdk v1.3.0/go.mod h1:rIo4suHNhQwBIPg9axF8V9CA72Wz2mKF1teNrup8yzs= go.opentelemetry.io/otel/sdk v1.6.1/go.mod h1:IVYrddmFZ+eJqu2k38qD3WezFR2pymCzm8tdxyh3R4E= go.opentelemetry.io/otel/sdk v1.11.1/go.mod h1:/l3FE4SupHJ12TduVjUkZtlfFqDCQJlOlithYrdktys= -go.opentelemetry.io/otel/sdk v1.11.2/go.mod h1:wZ1WxImwpq+lVRo4vsmSOxdd+xwoUJ6rqyLc3SyX9aU= +go.opentelemetry.io/otel/sdk v1.14.0/go.mod h1:bwIC5TjrNG6QDCHNWvW4HLHtUQ4I+VQDsnjhvyZCALM= go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= @@ -2529,7 +2812,7 @@ go.opentelemetry.io/otel/trace v1.3.0/go.mod h1:c/VDhno8888bvQYmbYLqe41/Ldmr/KKu go.opentelemetry.io/otel/trace v1.6.0/go.mod h1:qs7BrU5cZ8dXQHBGxHMOxwME/27YH2qEp4/+tZLLwJE= go.opentelemetry.io/otel/trace v1.6.1/go.mod h1:RkFRM1m0puWIq10oxImnGEduNBzxiN7TXluRBtE+5j0= go.opentelemetry.io/otel/trace v1.11.1/go.mod h1:f/Q9G7vzk5u91PhbmKbg1Qn0rzH1LJ4vbPHFGkTPtOk= -go.opentelemetry.io/otel/trace v1.11.2/go.mod h1:4N+yC7QEz7TTsG9BSRLNAa63eg5E06ObSbKPmxQ/pKA= +go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.11.0/go.mod h1:QpEjXPrNQzrFDZgoTo49dgHR9RYRSrg3NAKnUGl9YpQ= go.opentelemetry.io/proto/otlp v0.12.1/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= @@ -2541,8 +2824,9 @@ go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/automaxprocs v1.5.1/go.mod h1:BF4eumQw0P9GtnuxxovUd06vwm1o18oMzFtK66vU6XU= go.uber.org/automaxprocs v1.5.2 h1:2LxUOGiR3O6tw8ui5sZa2LAaHnsviZdVOUZw4fvbnME= go.uber.org/automaxprocs v1.5.2/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0= @@ -2550,14 +2834,13 @@ go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= +go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= -go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= @@ -2568,13 +2851,12 @@ go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= -gocloud.dev v0.29.0 h1:fBy0jwJSmxs0IjT0fE32MO+Mj+307VZQwyHaTyFZbC4= -gocloud.dev v0.29.0/go.mod h1:E3dAjji80g+lIkq4CQeF/BTWqv1CBeTftmOb+gpyapQ= +gocloud.dev v0.30.0 h1:PRgA+DXUz8/uuTJDA7wc8o2Hwj9yZ2qAsShZ60esbE8= +gocloud.dev v0.30.0/go.mod h1:w+GlGVg/Jy9JV0Xc9eSXzUZeVEmSWW49W0syFK1+T9U= golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= @@ -2614,7 +2896,11 @@ golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20221012134737-56aed061732a/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM= golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -2624,14 +2910,15 @@ golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= golang.org/x/exp v0.0.0-20230108222341-4b8118a2686a/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= -golang.org/x/exp v0.0.0-20230124195608-d38c7dcee874/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= @@ -2641,6 +2928,16 @@ golang.org/x/exp/typeparams v0.0.0-20230224173230-c95f2b4c22f2/go.mod h1:AbB0pIl golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -2671,6 +2968,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2725,7 +3024,6 @@ golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= @@ -2735,10 +3033,12 @@ golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -2760,10 +3060,13 @@ golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfS golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= -golang.org/x/net v0.3.1-0.20221206200815-1e63c2f08a10/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU= golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -2794,11 +3097,13 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.3.0/go.mod h1:rQrIauxkUhJ6CuwEXwymO2/eh4xz2ZWF1nBkcxS+tGk= golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= -golang.org/x/oauth2 v0.8.0 h1:6dkIjl3j3LtZ/O3sTgZTMsLKSftL/B8Zgq4huOIIUu8= +golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= +golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= +golang.org/x/oauth2 v0.9.0 h1:BPpt2kU7oMRq3kCHAA1tbSEshXRw1LpG2ztgDwrzuAs= +golang.org/x/oauth2 v0.9.0/go.mod h1:qYgFZaFiu6Wg24azG8bdV52QJXJGbZzIIsRCdVKzbLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -2814,8 +3119,10 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220513210516-0976fa681c29/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -2907,6 +3214,7 @@ golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2917,7 +3225,6 @@ golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210503080704-8803ae5d1324/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -2965,8 +3272,8 @@ golang.org/x/sys v0.0.0-20220702020025-31831981b65f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220731174439-a90be440212d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220906165534-d0df966e6959/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -2975,6 +3282,9 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= @@ -2987,6 +3297,9 @@ golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.9.0 h1:GRRCnKYhdQrD8kfRAdQ6Zcw1P0OcELxGLKJvtjVMZ28= golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -3003,6 +3316,8 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -3052,6 +3367,7 @@ golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -3096,6 +3412,7 @@ golang.org/x/tools v0.0.0-20200916195026-c9a70fc28ce3/go.mod h1:z6u4i615ZeAfBE4X golang.org/x/tools v0.0.0-20201001104356-43ebab892c4c/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -3120,6 +3437,8 @@ golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= golang.org/x/tools v0.10.0 h1:tvDr/iQoUqNdohiYm0LmmKcBk+q86lb9EprIUFhHHGg= golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -3135,8 +3454,12 @@ golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3j golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= +gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= +gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= +gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= @@ -3193,13 +3516,20 @@ google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91 google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= google.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0= -google.golang.org/api v0.104.0/go.mod h1:JCspTXJbBxa5ySXw4UgUqVer7DfVxbvc/CTUFqAED5U= google.golang.org/api v0.106.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= google.golang.org/api v0.107.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= -google.golang.org/api v0.123.0 h1:yHVU//vA+qkOhm4reEC9LtzHVUCN/IqqNRl1iQ9xE20= +google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= +google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= +google.golang.org/api v0.118.0/go.mod h1:76TtD3vkgmZ66zZzp72bUUklpmQmKlhh6sYtIjYK+5E= +google.golang.org/api v0.122.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= google.golang.org/api v0.123.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= +google.golang.org/api v0.124.0/go.mod h1:xu2HQurE5gi/3t1aFCvhPD781p0a3p11sdunTJ2BlP4= +google.golang.org/api v0.125.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= +google.golang.org/api v0.126.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= +google.golang.org/api v0.128.0 h1:RjPESny5CnQRn9V6siglged+DZCgfu9l6mO9dkX9VOg= +google.golang.org/api v0.128.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -3285,6 +3615,7 @@ google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ6 google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= @@ -3309,7 +3640,6 @@ google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljW google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= -google.golang.org/genproto v0.0.0-20220728213248-dd149ef739b9/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= @@ -3330,22 +3660,47 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= +google.golang.org/genproto v0.0.0-20221109142239-94d6d90a7d66/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= google.golang.org/genproto v0.0.0-20221117204609-8f9c96812029/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221201204527-e3fa12d562f3/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd/go.mod h1:cTsE614GARnxrLsqKREzmNYJACSWWpAWdNMwnD7c2BE= -google.golang.org/genproto v0.0.0-20221205194025-8222ab48f5fc/go.mod h1:1dOng4TWOomJrDGhpXjfCD35wQC6jnC7HpRmOFRqEV0= -google.golang.org/genproto v0.0.0-20221206210731-b1a01be3a5f6/go.mod h1:1dOng4TWOomJrDGhpXjfCD35wQC6jnC7HpRmOFRqEV0= google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= google.golang.org/genproto v0.0.0-20230112194545-e10362b5ecf9/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= google.golang.org/genproto v0.0.0-20230113154510-dbe35b8444a5/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230123190316-2c411cf9d197/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= google.golang.org/genproto v0.0.0-20230124163310-31e0e69b6fc2/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230127162408-596548ed4efa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= +google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44/go.mod h1:8B0gmkoRebU8ukX6HP+4wrVQUY1+6PkQ44BSyIlflHA= +google.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= +google.golang.org/genproto v0.0.0-20230223222841-637eb2293923/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= +google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488/go.mod h1:TvhZT5f700eVlTNwND1xoEZQeWTB2RY/65kplwl/bFA= +google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/genproto v0.0.0-20230320184635-7606e756e683/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230403163135-c38d8f061ccd/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= +google.golang.org/genproto v0.0.0-20230525234025-438c736192d0/go.mod h1:9ExIQyXL5hZrHzQceCwuSYwZZ5QZBazOcprJ5rgs3lY= +google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc h1:8DyZCyvI8mE1IdLy/60bS+52xfymkE72wv1asokgtao= +google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= +google.golang.org/genproto/googleapis/api v0.0.0-20230525234020-1aefcd67740a/go.mod h1:ts19tUU+Z0ZShN1y3aPyq2+O3d5FUNNgT6FtOzmrNn8= +google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc h1:kVKPf/IiYSBWEWtkIn6wZXwWGCnLKcC8oWfZvXjsGnM= +google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:ylj+BE99M198VPbBh6A8d9n3w8fChvyLK3wwBOjXBFA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234015-3fc162c6f38a/go.mod h1:xURIpW9ES5+/GZhnV6beoEtxQrnkRGIfP5VQG2tCBLc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc h1:XSJ8Vk1SWuNr8S18z1NZSziL0CPIXLCCMDOEFtHBOFc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -3388,10 +3743,13 @@ google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCD google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww= -google.golang.org/grpc v1.52.1/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= +google.golang.org/grpc v1.52.0/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= +google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= -google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag= +google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= +google.golang.org/grpc v1.56.0 h1:+y7Bs8rtMd07LeXmL3NxcTLn7mUkbKZqEpPhMNkwJEE= +google.golang.org/grpc v1.56.0/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -3408,6 +3766,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= @@ -3431,7 +3791,6 @@ gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKW gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.6/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= @@ -3466,6 +3825,7 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= @@ -3480,6 +3840,7 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= honnef.co/go/tools v0.4.3 h1:o/n5/K5gXqk8Gozvs2cnL0F2S1/g1vcGCAx2vETjITw= honnef.co/go/tools v0.4.3/go.mod h1:36ZgoUOrqOk1GxwHhyryEkq8FQWkUO2xGuSMhUCcdvA= k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= @@ -3487,14 +3848,14 @@ k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= k8s.io/api v0.22.5/go.mod h1:mEhXyLaSD1qTOf40rRiKXkc+2iCem09rWLlFwhCEiAs= k8s.io/api v0.23.5/go.mod h1:Na4XuKng8PXJ2JsploYYrivXrINeTaycCGcYgF91Xm8= -k8s.io/api v0.26.1/go.mod h1:xd/GBNgR0f707+ATNyPmQ1oyKSgndzXij81FzWGsejg= +k8s.io/api v0.26.2/go.mod h1:1kjMQsFE+QHPfskEcVNgL3+Hp88B80uj0QtSOlj8itU= k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= k8s.io/apimachinery v0.22.1/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= k8s.io/apimachinery v0.22.5/go.mod h1:xziclGKwuuJ2RM5/rSFQSYAj0zdbci3DH8kj+WvyN0U= k8s.io/apimachinery v0.23.5/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM= -k8s.io/apimachinery v0.26.1/go.mod h1:tnPmbONNJ7ByJNz9+n9kMjNP8ON+1qoAIIC70lztu74= +k8s.io/apimachinery v0.26.2/go.mod h1:ats7nN1LExKHvJ9TmwootT00Yz05MuYqPXEXaVeOy5I= k8s.io/apimachinery v0.27.3 h1:Ubye8oBufD04l9QnNtW05idcOe9Z3GQN8+7PqmuVcUM= k8s.io/apimachinery v0.27.3/go.mod h1:XNfZ6xklnMCOGGFNqXG7bUrQCoR04dh/E7FprV6pb+E= k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= @@ -3506,7 +3867,7 @@ k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= k8s.io/client-go v0.22.5/go.mod h1:cs6yf/61q2T1SdQL5Rdcjg9J1ElXSwbjSrW2vFImM4Y= k8s.io/client-go v0.23.5/go.mod h1:flkeinTO1CirYgzMPRWxUCnV0G4Fbu2vLhYCObnt/r4= -k8s.io/client-go v0.26.1/go.mod h1:IWNSglg+rQ3OcvDkhY6+QLeasV4OYHDjdqeWkDQZwGE= +k8s.io/client-go v0.26.2/go.mod h1:u5EjOuSyBa09yqqyY7m3abZeovO/7D/WehVVlZ2qcqU= k8s.io/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI= @@ -3529,6 +3890,7 @@ k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.40.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/klog/v2 v2.90.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= @@ -3537,7 +3899,7 @@ k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2R k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4= -k8s.io/kube-openapi v0.0.0-20221207184640-f3cff1453715/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4= +k8s.io/kube-openapi v0.0.0-20230303024457-afdc3dddf62d/go.mod h1:y5VtZWM9sHHc2ZodIH/6SHzXj+TPU5USoA8lcIeKEKY= k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= @@ -3545,9 +3907,43 @@ k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/ k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20221107191617-1a15be271d1d/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -k8s.io/utils v0.0.0-20221128185143-99ec85e7a448/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/utils v0.0.0-20230308161112-d77c459e9343/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 h1:qY1Ad8PODbnymg2pRbkyMT/ylpTrCM8P2RJ0yroCyIk= k8s.io/utils v0.0.0-20230406110748-d93618cff8a2/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.36.2/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.36.3/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/ccgo/v3 v3.0.0-20220428102840-41399a37e894/go.mod h1:eI31LL8EwEBKPpNpA4bU1/i+sKOwOrQy8D87zWUcRZc= +modernc.org/ccgo/v3 v3.0.0-20220430103911-bc99d88307be/go.mod h1:bwdAnOoaIt8Ax9YdWGjxWsdkPcZyRPHqrOvJxaKAKGw= +modernc.org/ccgo/v3 v3.16.4/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= +modernc.org/ccgo/v3 v3.16.6/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= +modernc.org/ccgo/v3 v3.16.8/go.mod h1:zNjwkizS+fIFDrDjIAgBSCLkWbJuHF+ar3QRn+Z9aws= +modernc.org/ccgo/v3 v3.16.9/go.mod h1:zNMzC9A9xeNUepy6KuZBbugn3c0Mc9TeiJO4lgvkJDo= +modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= +modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= +modernc.org/libc v0.0.0-20220428101251-2d5f3daf273b/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= +modernc.org/libc v1.16.0/go.mod h1:N4LD6DBE9cf+Dzf9buBlzVJndKr/iJHG97vGLHYnb5A= +modernc.org/libc v1.16.1/go.mod h1:JjJE0eu4yeK7tab2n4S1w8tlWd9MxXLRzheaRnAKymU= +modernc.org/libc v1.16.17/go.mod h1:hYIV5VZczAmGZAnG15Vdngn5HSF5cSkbvfz2B7GRuVU= +modernc.org/libc v1.16.19/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= +modernc.org/libc v1.17.0/go.mod h1:XsgLldpP4aWlPlsjqKRdHPqCxCjISdHfM/yeWC5GyW0= +modernc.org/libc v1.17.1/go.mod h1:FZ23b+8LjxZs7XtFMbSzL/EhPxNbfZbErxEHc7cbD9s= +modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/memory v1.1.1/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= +modernc.org/memory v1.2.0/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= +modernc.org/memory v1.2.1/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/sqlite v1.18.1/go.mod h1:6ho+Gow7oX5V+OiOQ6Tr4xeqbx13UZ6t+Fw9IRUG4d4= +modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw= +modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= +modernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw= +modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= mvdan.cc/gofumpt v0.4.0 h1:JVf4NN1mIpHogBj7ABpgOyZc65/UUOkKQFkoURsz4MM= mvdan.cc/gofumpt v0.4.0/go.mod h1:PljLOHDeZqgS8opHRKLzp2It2VBuSdteAgqUfzMTxlQ= mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed h1:WX1yoOaKQfddO/mLzdV4wptyWgoH/6hwLs7QHTixo0I= @@ -3556,7 +3952,7 @@ mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphD mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d h1:3rvTIIM22r9pvXk+q3swxUQAQOxksVMGK7sml4nG57w= mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d/go.mod h1:IeHQjmn6TOD+e4Z3RFiZMMsLVL+A96Nvptar8Fj71is= -nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= From 3849d68625be4980ceffd41c1ca38a667ae2671f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Tue, 4 Jul 2023 14:48:20 +0300 Subject: [PATCH 002/125] begin implementing probe: minTwoCodeReviewers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/minTwoCodeReviewers/def.yml | 20 ++++++++++++++++++++ probes/minTwoCodeReviewers/impl.go | 4 ++++ 2 files changed, 24 insertions(+) create mode 100644 probes/minTwoCodeReviewers/def.yml create mode 100644 probes/minTwoCodeReviewers/impl.go diff --git a/probes/minTwoCodeReviewers/def.yml b/probes/minTwoCodeReviewers/def.yml new file mode 100644 index 00000000000..5a9e0a6cee7 --- /dev/null +++ b/probes/minTwoCodeReviewers/def.yml @@ -0,0 +1,20 @@ +# © 2023 Nokia +# Licensed under the Apache License 2.0 +# SPDX-License-Identifier: Apache-2.0 + +id: minTwoCodeReviewers +short: Check that at least two people review a change before merging +motivation: > + To ensure that the review process works, the proposed changes + should have a minimum number of approvals. +implementation: > + The implementation looks for the number of reviewers for the last few pull requests. +outcome: + - If the changes had at least two reviewers, the probe returns OutcomePositive (1) + - If the changes had fewer than two reviewers, the prove returns OutcomeNegative (0) +remediation: + effort: Mid + text: + - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. + markdown: + - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. \ No newline at end of file diff --git a/probes/minTwoCodeReviewers/impl.go b/probes/minTwoCodeReviewers/impl.go new file mode 100644 index 00000000000..09f509610f9 --- /dev/null +++ b/probes/minTwoCodeReviewers/impl.go @@ -0,0 +1,4 @@ +// © 2023 Nokia +// Licensed under the Apache License 2.0 +// SPDX-License-Identifier: Apache-2.0 + From 1faa27732b7f3fc0c3c418648bffc1256eb2c213 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Tue, 4 Jul 2023 16:21:54 +0300 Subject: [PATCH 003/125] print raw results MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/minTwoCodeReviewers/impl.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/probes/minTwoCodeReviewers/impl.go b/probes/minTwoCodeReviewers/impl.go index 09f509610f9..8a666030b8e 100644 --- a/probes/minTwoCodeReviewers/impl.go +++ b/probes/minTwoCodeReviewers/impl.go @@ -2,3 +2,24 @@ // Licensed under the Apache License 2.0 // SPDX-License-Identifier: Apache-2.0 +package minTwoCodeReviewers + +import ( + "embed" + + "github.com/ossf/scorecard/v4/checker" + "github.com/ossf/scorecard/v4/finding" + "github.com/ossf/scorecard/v4/probes/utils" + + "fmt" // extra abackman rm remove +) + +var fs embed.FS + +const probe = "minTwoCodeReviewers" + +func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { + reviewData := raw.CodeReviewResults.DefaultBranchChangesets + fmt.Printf("%v\n\n", reviewData) + return utils.CodeReviewRun(reviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) +} \ No newline at end of file From 6364f45dafd016476b56380945279337dc84aa53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Wed, 5 Jul 2023 09:50:01 +0300 Subject: [PATCH 004/125] print raw results MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/utils/code_review.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 probes/utils/code_review.go diff --git a/probes/utils/code_review.go b/probes/utils/code_review.go new file mode 100644 index 00000000000..5bdda4286b7 --- /dev/null +++ b/probes/utils/code_review.go @@ -0,0 +1,25 @@ +// © 2023 Nokia +// Licensed under the Apache License 2.0 +// SPDX-License-Identifier: Apache-2.0 + +package utils + +import ( + "embed" + "fmt" + + "github.com/ossf/scorecard/v4/checker" + "github.com/ossf/scorecard/v4/finding" +) + +func CodeReviewRun(reviewData []checker.Changeset, fs embed.FS, probeID string, + foundOutcome, notFoundOutcome finding.Outcome, +) ([]finding.Finding, string, error) { + var findings []finding.Finding + for i := range reviewData { + data := &reviewData[i] + fmt.Printf("ABACKMAN%v\n\n", data) + fmt.Printf("ABACKMAN%v", findings) + } + return findings, probeID, nil +} \ No newline at end of file From 4bd638566eae7346baab51c940c2bf9e7fc5999b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Wed, 5 Jul 2023 09:54:39 +0300 Subject: [PATCH 005/125] print raw results MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/utils/code_review.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/probes/utils/code_review.go b/probes/utils/code_review.go index 5bdda4286b7..3dea7ee5e90 100644 --- a/probes/utils/code_review.go +++ b/probes/utils/code_review.go @@ -18,8 +18,8 @@ func CodeReviewRun(reviewData []checker.Changeset, fs embed.FS, probeID string, var findings []finding.Finding for i := range reviewData { data := &reviewData[i] - fmt.Printf("ABACKMAN%v\n\n", data) - fmt.Printf("ABACKMAN%v", findings) + fmt.Printf("%dABACKMAN%v\n\n", i, data) + //fmt.Printf("ABACKMAN%v", findings) } return findings, probeID, nil } \ No newline at end of file From 141f506cc8e89fb0ab629c6fbecf81bb2ad4bc6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Thu, 6 Jul 2023 09:53:15 +0300 Subject: [PATCH 006/125] rename probe directory: minimumCodeReviewers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/{minTwoCodeReviewers => minimumCodeReviewers}/def.yml | 0 probes/{minTwoCodeReviewers => minimumCodeReviewers}/impl.go | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename probes/{minTwoCodeReviewers => minimumCodeReviewers}/def.yml (100%) rename probes/{minTwoCodeReviewers => minimumCodeReviewers}/impl.go (100%) diff --git a/probes/minTwoCodeReviewers/def.yml b/probes/minimumCodeReviewers/def.yml similarity index 100% rename from probes/minTwoCodeReviewers/def.yml rename to probes/minimumCodeReviewers/def.yml diff --git a/probes/minTwoCodeReviewers/impl.go b/probes/minimumCodeReviewers/impl.go similarity index 100% rename from probes/minTwoCodeReviewers/impl.go rename to probes/minimumCodeReviewers/impl.go From 2f5838e09406f36dff80247b3d7281b43ccb0613 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Fri, 7 Jul 2023 13:54:04 +0300 Subject: [PATCH 007/125] rename probe CodeReviewers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- .../{minimumCodeReviewers => uniqueCodeReviewers}/def.yml | 0 .../{minimumCodeReviewers => uniqueCodeReviewers}/impl.go | 8 ++++---- 2 files changed, 4 insertions(+), 4 deletions(-) rename probes/{minimumCodeReviewers => uniqueCodeReviewers}/def.yml (100%) rename probes/{minimumCodeReviewers => uniqueCodeReviewers}/impl.go (75%) diff --git a/probes/minimumCodeReviewers/def.yml b/probes/uniqueCodeReviewers/def.yml similarity index 100% rename from probes/minimumCodeReviewers/def.yml rename to probes/uniqueCodeReviewers/def.yml diff --git a/probes/minimumCodeReviewers/impl.go b/probes/uniqueCodeReviewers/impl.go similarity index 75% rename from probes/minimumCodeReviewers/impl.go rename to probes/uniqueCodeReviewers/impl.go index 8a666030b8e..d9623c2036f 100644 --- a/probes/minimumCodeReviewers/impl.go +++ b/probes/uniqueCodeReviewers/impl.go @@ -2,7 +2,7 @@ // Licensed under the Apache License 2.0 // SPDX-License-Identifier: Apache-2.0 -package minTwoCodeReviewers +package minimumCodeReviewers import ( "embed" @@ -11,15 +11,15 @@ import ( "github.com/ossf/scorecard/v4/finding" "github.com/ossf/scorecard/v4/probes/utils" - "fmt" // extra abackman rm remove + //"fmt" // extra abackman rm remove ) var fs embed.FS -const probe = "minTwoCodeReviewers" +const probe = "minimumCodeReviewers" func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { reviewData := raw.CodeReviewResults.DefaultBranchChangesets - fmt.Printf("%v\n\n", reviewData) + //fmt.Printf("%v\n\n", reviewData) return utils.CodeReviewRun(reviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) } \ No newline at end of file From 28aa0dd09b94c1972c267d8f82a63f8ee9b9882c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Fri, 7 Jul 2023 13:55:53 +0300 Subject: [PATCH 008/125] rename import for CodeReviewers probe MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/entries.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/probes/entries.go b/probes/entries.go index 84be2c51fee..115be768b86 100644 --- a/probes/entries.go +++ b/probes/entries.go @@ -21,6 +21,7 @@ import ( "github.com/ossf/scorecard/v4/probes/toolPyUpInstalled" "github.com/ossf/scorecard/v4/probes/toolRenovateInstalled" "github.com/ossf/scorecard/v4/probes/toolSonatypeLiftInstalled" + "github.com/ossf/scorecard/v4/probes/uniqueCodeReviewers" ) // ProbeImpl is the implementation of a probe. @@ -37,12 +38,16 @@ var ( toolPyUpInstalled.Run, toolSonatypeLiftInstalled.Run, } + CodeReviewChecks = []ProbeImpl { + uniqueCodeReviewers.Run, + } ) //nolint:gochecknoinits func init() { All = concatMultipleProbes([][]ProbeImpl{ - DependencyToolUpdates, + /* Not our probes, not checked*/ //DependencyToolUpdates, + CodeReviewChecks, }) } From 618da950cc753652fee16ec74861c578bdfe2973 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Mon, 10 Jul 2023 11:18:16 +0300 Subject: [PATCH 009/125] update code reviewers definition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/uniqueCodeReviewers/def.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/probes/uniqueCodeReviewers/def.yml b/probes/uniqueCodeReviewers/def.yml index 5a9e0a6cee7..7dde0a6642c 100644 --- a/probes/uniqueCodeReviewers/def.yml +++ b/probes/uniqueCodeReviewers/def.yml @@ -2,18 +2,19 @@ # Licensed under the Apache License 2.0 # SPDX-License-Identifier: Apache-2.0 -id: minTwoCodeReviewers -short: Check that at least two people review a change before merging +id: minimumCodeReviewers +short: Check how many reviewers review a change before merging. motivation: > To ensure that the review process works, the proposed changes should have a minimum number of approvals. implementation: > The implementation looks for the number of reviewers for the last few pull requests. + Only unique reviewer logins that aren't the same as the changeset author are counted. outcome: - If the changes had at least two reviewers, the probe returns OutcomePositive (1) - If the changes had fewer than two reviewers, the prove returns OutcomeNegative (0) remediation: - effort: Mid + effort: Low text: - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. markdown: From 8041581db55f7297ce87b68f7c0433c974b1fa82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Mon, 10 Jul 2023 11:20:17 +0300 Subject: [PATCH 010/125] update code reviewers implementation; fixed embed FS usage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/uniqueCodeReviewers/impl.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/probes/uniqueCodeReviewers/impl.go b/probes/uniqueCodeReviewers/impl.go index d9623c2036f..1b7b4e7d8d8 100644 --- a/probes/uniqueCodeReviewers/impl.go +++ b/probes/uniqueCodeReviewers/impl.go @@ -2,7 +2,7 @@ // Licensed under the Apache License 2.0 // SPDX-License-Identifier: Apache-2.0 -package minimumCodeReviewers +package uniqueCodeReviewers import ( "embed" @@ -10,16 +10,14 @@ import ( "github.com/ossf/scorecard/v4/checker" "github.com/ossf/scorecard/v4/finding" "github.com/ossf/scorecard/v4/probes/utils" - - //"fmt" // extra abackman rm remove ) +//go:embed *.yml var fs embed.FS const probe = "minimumCodeReviewers" func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { reviewData := raw.CodeReviewResults.DefaultBranchChangesets - //fmt.Printf("%v\n\n", reviewData) return utils.CodeReviewRun(reviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) } \ No newline at end of file From e1f42248a4d0bfc1959af6dc08e0cc1a89405dfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Mon, 10 Jul 2023 13:47:41 +0300 Subject: [PATCH 011/125] printing all findings, work out where to concatenate them MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/utils/code_review.go | 61 +++++++++++++++++++++++++++++++------ 1 file changed, 51 insertions(+), 10 deletions(-) diff --git a/probes/utils/code_review.go b/probes/utils/code_review.go index 3dea7ee5e90..5d7cce45b01 100644 --- a/probes/utils/code_review.go +++ b/probes/utils/code_review.go @@ -7,19 +7,60 @@ package utils import ( "embed" "fmt" - + //"os" "github.com/ossf/scorecard/v4/checker" "github.com/ossf/scorecard/v4/finding" ) +var minimumReviewers = 2 + +// Looks through the data and validates author and reviewers of a changeset func CodeReviewRun(reviewData []checker.Changeset, fs embed.FS, probeID string, - foundOutcome, notFoundOutcome finding.Outcome, -) ([]finding.Finding, string, error) { - var findings []finding.Finding - for i := range reviewData { - data := &reviewData[i] - fmt.Printf("%dABACKMAN%v\n\n", i, data) - //fmt.Printf("ABACKMAN%v", findings) + positiveOutcome, negativeOutcome finding.Outcome, + ) ([]finding.Finding, string, error) { + var findings []finding.Finding + for i := range reviewData { + data := &reviewData[i] + if data.ReviewPlatform == "Unknown" && data.Author.Login == "" { + continue + } + reviewersList := make([]string, len(data.Reviews)) + for i := range data.Reviews { + reviewersList[i] = data.Reviews[i].Author.Login + } + numReviewers := uniqueReviewers(data.Author.Login, reviewersList) + if numReviewers >= minimumReviewers { + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewers found", numReviewers), + nil, positiveOutcome) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + } else { + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewers found", numReviewers), + nil, negativeOutcome) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + } + } + return findings, probeID, nil } - return findings, probeID, nil -} \ No newline at end of file + + // returns the number of unique reviewers that aren't the changeset author + func uniqueReviewers(authorLogin string, reviewers []string) int { + uniqueReviewers := 0 + for i := range reviewers { + duplicateCount := 0 + for j := range reviewers { + if reviewers[j] == reviewers[i] && j > i { + duplicateCount++ + } + } + if reviewers[i] != authorLogin && duplicateCount == 0 { + uniqueReviewers++ + } + } + return uniqueReviewers + } \ No newline at end of file From de2ae3d5d9f42eb22ccc487206d268f9cf975fae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Mon, 10 Jul 2023 16:19:36 +0300 Subject: [PATCH 012/125] concatenated findings to one single finding, outcome is based on the least found unique reviewers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/utils/code_review.go | 74 +++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 35 deletions(-) diff --git a/probes/utils/code_review.go b/probes/utils/code_review.go index 5d7cce45b01..78c3d6d08d9 100644 --- a/probes/utils/code_review.go +++ b/probes/utils/code_review.go @@ -18,49 +18,53 @@ var minimumReviewers = 2 func CodeReviewRun(reviewData []checker.Changeset, fs embed.FS, probeID string, positiveOutcome, negativeOutcome finding.Outcome, ) ([]finding.Finding, string, error) { - var findings []finding.Finding - for i := range reviewData { - data := &reviewData[i] - if data.ReviewPlatform == "Unknown" && data.Author.Login == "" { - continue + var findings []finding.Finding + leastFoundReviewers := 0 + for i := range reviewData { + data := &reviewData[i] + if data.ReviewPlatform == "Unknown" && data.Author.Login == "" { + continue } reviewersList := make([]string, len(data.Reviews)) for i := range data.Reviews { reviewersList[i] = data.Reviews[i].Author.Login } numReviewers := uniqueReviewers(data.Author.Login, reviewersList) - if numReviewers >= minimumReviewers { - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewers found", numReviewers), - nil, positiveOutcome) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - } else { - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewers found", numReviewers), - nil, negativeOutcome) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - } + if i == 0 || numReviewers < leastFoundReviewers { + leastFoundReviewers = numReviewers + } + } + if leastFoundReviewers >= minimumReviewers { + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewers found for at least one changeset, %v wanted.", leastFoundReviewers, minimumReviewers), + nil, positiveOutcome) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) } - return findings, probeID, nil + findings = append(findings, *f) + } else { + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewer(s) found for at least one changeset, %v wanted.", leastFoundReviewers, minimumReviewers), + nil, negativeOutcome) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) } + return findings, probeID, nil +} - // returns the number of unique reviewers that aren't the changeset author - func uniqueReviewers(authorLogin string, reviewers []string) int { - uniqueReviewers := 0 - for i := range reviewers { - duplicateCount := 0 - for j := range reviewers { - if reviewers[j] == reviewers[i] && j > i { - duplicateCount++ - } - } - if reviewers[i] != authorLogin && duplicateCount == 0 { - uniqueReviewers++ +// returns the number of unique reviewers that aren't the changeset author +func uniqueReviewers(authorLogin string, reviewers []string) int { + uniqueReviewers := 0 + for i := range reviewers { + duplicateCount := 0 + for j := range reviewers { + if reviewers[j] == reviewers[i] && j > i { + duplicateCount++ } } - return uniqueReviewers - } \ No newline at end of file + if reviewers[i] != authorLogin && duplicateCount == 0 { + uniqueReviewers++ + } + } + return uniqueReviewers +} \ No newline at end of file From 4d3cafd5568a769fc73c38d0b97aef079f72c624 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Wed, 12 Jul 2023 16:15:42 +0300 Subject: [PATCH 013/125] refactored uniqueCodeReviewers probe, needs more error checks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/uniqueCodeReviewers/impl.go | 56 ++++++++++++++++++++++++++++-- probes/utils/code_review.go | 50 +------------------------- 2 files changed, 54 insertions(+), 52 deletions(-) diff --git a/probes/uniqueCodeReviewers/impl.go b/probes/uniqueCodeReviewers/impl.go index 1b7b4e7d8d8..700c73ca595 100644 --- a/probes/uniqueCodeReviewers/impl.go +++ b/probes/uniqueCodeReviewers/impl.go @@ -6,7 +6,7 @@ package uniqueCodeReviewers import ( "embed" - + "fmt" "github.com/ossf/scorecard/v4/checker" "github.com/ossf/scorecard/v4/finding" "github.com/ossf/scorecard/v4/probes/utils" @@ -16,8 +16,58 @@ import ( var fs embed.FS const probe = "minimumCodeReviewers" +const minimumReviewers = 2 func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { - reviewData := raw.CodeReviewResults.DefaultBranchChangesets - return utils.CodeReviewRun(reviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) + rawReviewData := &raw.CodeReviewResults + return CodeReviewRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) +} + + +/* +** Looks through the data and validates author and reviewers of a changeset +** Scorecard currently only supports GitHub revisions and generates a positive +** score in the case of other platforms. This probe is created to ensure that +** there are a number of unique reviewers for each changeset. +*/ + +// reviewData *checker.CodeReviewData +func CodeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, + positiveOutcome, negativeOutcome finding.Outcome, + ) ([]finding.Finding, string, error) { + var findings []finding.Finding + leastFoundReviewers := 0 + changesets := reviewData.DefaultBranchChangesets + for i := range changesets { + data := &changesets[i] + fmt.Printf("\n[DATA] %v", data.Author) + if data.ReviewPlatform == "Unknown" && data.Author.Login == "" { + continue + } + reviewersList := make([]string, len(data.Reviews)) + for i := range data.Reviews { + reviewersList[i] = data.Reviews[i].Author.Login + fmt.Printf("\n\t[REVIEW] %v", reviewersList[i]) + } + numReviewers := utils.UniqueReviewers(data.Author.Login, reviewersList) + if i == 0 || numReviewers < leastFoundReviewers { + leastFoundReviewers = numReviewers + } + } + if leastFoundReviewers >= minimumReviewers { + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewers found for at least one changeset, %v wanted.", leastFoundReviewers, minimumReviewers), + nil, positiveOutcome) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + } else { + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewer(s) found for at least one changeset, %v wanted.", leastFoundReviewers, minimumReviewers), + nil, negativeOutcome) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + } + return findings, probeID, nil } \ No newline at end of file diff --git a/probes/utils/code_review.go b/probes/utils/code_review.go index 78c3d6d08d9..bd9e6dd593a 100644 --- a/probes/utils/code_review.go +++ b/probes/utils/code_review.go @@ -3,57 +3,9 @@ // SPDX-License-Identifier: Apache-2.0 package utils - -import ( - "embed" - "fmt" - //"os" - "github.com/ossf/scorecard/v4/checker" - "github.com/ossf/scorecard/v4/finding" -) - -var minimumReviewers = 2 - -// Looks through the data and validates author and reviewers of a changeset -func CodeReviewRun(reviewData []checker.Changeset, fs embed.FS, probeID string, - positiveOutcome, negativeOutcome finding.Outcome, - ) ([]finding.Finding, string, error) { - var findings []finding.Finding - leastFoundReviewers := 0 - for i := range reviewData { - data := &reviewData[i] - if data.ReviewPlatform == "Unknown" && data.Author.Login == "" { - continue - } - reviewersList := make([]string, len(data.Reviews)) - for i := range data.Reviews { - reviewersList[i] = data.Reviews[i].Author.Login - } - numReviewers := uniqueReviewers(data.Author.Login, reviewersList) - if i == 0 || numReviewers < leastFoundReviewers { - leastFoundReviewers = numReviewers - } - } - if leastFoundReviewers >= minimumReviewers { - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewers found for at least one changeset, %v wanted.", leastFoundReviewers, minimumReviewers), - nil, positiveOutcome) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - } else { - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewer(s) found for at least one changeset, %v wanted.", leastFoundReviewers, minimumReviewers), - nil, negativeOutcome) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - } - return findings, probeID, nil -} // returns the number of unique reviewers that aren't the changeset author -func uniqueReviewers(authorLogin string, reviewers []string) int { +func UniqueReviewers(authorLogin string, reviewers []string) int { uniqueReviewers := 0 for i := range reviewers { duplicateCount := 0 From f5bd4dda3572068e1bd32862ffaddabd1d2dabef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Thu, 13 Jul 2023 15:33:37 +0300 Subject: [PATCH 014/125] add error handling for cases of non-existant author and/or reviewer logins MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/uniqueCodeReviewers/impl.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/probes/uniqueCodeReviewers/impl.go b/probes/uniqueCodeReviewers/impl.go index 700c73ca595..147e656ff11 100644 --- a/probes/uniqueCodeReviewers/impl.go +++ b/probes/uniqueCodeReviewers/impl.go @@ -17,6 +17,7 @@ var fs embed.FS const probe = "minimumCodeReviewers" const minimumReviewers = 2 +const noReviewerFound = -1 func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { rawReviewData := &raw.CodeReviewResults @@ -31,7 +32,6 @@ func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { ** there are a number of unique reviewers for each changeset. */ -// reviewData *checker.CodeReviewData func CodeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, positiveOutcome, negativeOutcome finding.Outcome, ) ([]finding.Finding, string, error) { @@ -40,17 +40,19 @@ func CodeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri changesets := reviewData.DefaultBranchChangesets for i := range changesets { data := &changesets[i] - fmt.Printf("\n[DATA] %v", data.Author) - if data.ReviewPlatform == "Unknown" && data.Author.Login == "" { - continue + //fmt.Printf("\n[DATA] %v", data.Author) + if data.Author.Login == "" { + return utils.AuthorNotFound(findings, probeID, fs) } reviewersList := make([]string, len(data.Reviews)) for i := range data.Reviews { reviewersList[i] = data.Reviews[i].Author.Login - fmt.Printf("\n\t[REVIEW] %v", reviewersList[i]) + //fmt.Printf("\n\t[REVIEW] %v", reviewersList[i]) } numReviewers := utils.UniqueReviewers(data.Author.Login, reviewersList) - if i == 0 || numReviewers < leastFoundReviewers { + if numReviewers == noReviewerFound { + return utils.ReviewerNotFound(findings, probeID, fs) + } else if i == 0 || numReviewers < leastFoundReviewers { leastFoundReviewers = numReviewers } } From 51999450c0fe61e16b0aab946a0a12f8cb0249f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Thu, 13 Jul 2023 15:33:55 +0300 Subject: [PATCH 015/125] add error handling for cases of non-existant author and/or reviewer logins MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/utils/code_review.go | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/probes/utils/code_review.go b/probes/utils/code_review.go index bd9e6dd593a..dd725451992 100644 --- a/probes/utils/code_review.go +++ b/probes/utils/code_review.go @@ -3,12 +3,21 @@ // SPDX-License-Identifier: Apache-2.0 package utils - + +import ( + "github.com/ossf/scorecard/v4/finding" + "embed" + "fmt" +) + // returns the number of unique reviewers that aren't the changeset author func UniqueReviewers(authorLogin string, reviewers []string) int { uniqueReviewers := 0 for i := range reviewers { duplicateCount := 0 + if (reviewers[i] == "") { + return -1 + } for j := range reviewers { if reviewers[j] == reviewers[i] && j > i { duplicateCount++ @@ -19,4 +28,24 @@ func UniqueReviewers(authorLogin string, reviewers []string) int { } } return uniqueReviewers -} \ No newline at end of file +} + +func AuthorNotFound(findings []finding.Finding, probeID string, + fs embed.FS) ([]finding.Finding, string, error) { + f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprintf("Could not retrieve the author of a changeset."), nil) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + return findings, probeID, nil +} + +func ReviewerNotFound(findings []finding.Finding, probeID string, + fs embed.FS) ([]finding.Finding, string, error) { + f, err := finding.NewNegative(fs, probeID, fmt.Sprintf("Could not retrieve reviewers of a changeset."), nil) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + return findings, probeID, nil + } \ No newline at end of file From 801486c7870c88fe7c98a232a8ccd30fa69b77dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Tue, 18 Jul 2023 11:54:32 +0300 Subject: [PATCH 016/125] rename probe MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/entries.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/probes/entries.go b/probes/entries.go index 6ef64c96e21..902272905f4 100644 --- a/probes/entries.go +++ b/probes/entries.go @@ -39,7 +39,7 @@ var ( toolSonatypeLiftInstalled.Run, } CodeReviewChecks = []ProbeImpl { - uniqueCodeReviewers.Run, + codeReviewTwoReviewers.Run, } ) From a722686c81e56ab9576afad43b7fa221e45f23b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Tue, 18 Jul 2023 15:55:24 +0300 Subject: [PATCH 017/125] update codeReviewTwoReviewers definition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeReviewTwoReviewers/def.yml | 8 ++++---- probes/codeReviewTwoReviewers/impl.go | 9 +++------ 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/probes/codeReviewTwoReviewers/def.yml b/probes/codeReviewTwoReviewers/def.yml index 7dde0a6642c..87b258d77c1 100644 --- a/probes/codeReviewTwoReviewers/def.yml +++ b/probes/codeReviewTwoReviewers/def.yml @@ -2,16 +2,16 @@ # Licensed under the Apache License 2.0 # SPDX-License-Identifier: Apache-2.0 -id: minimumCodeReviewers -short: Check how many reviewers review a change before merging. +id: codeReviewTwoReviewers +short: Check that at least two reviewers review a change before merging. motivation: > To ensure that the review process works, the proposed changes should have a minimum number of approvals. implementation: > - The implementation looks for the number of reviewers for the last few pull requests. + The implementation looks for the number of reviewers for the last few changesets. Only unique reviewer logins that aren't the same as the changeset author are counted. outcome: - - If the changes had at least two reviewers, the probe returns OutcomePositive (1) + - If all the changes had at least two reviewers, the probe returns OutcomePositive (1) - If the changes had fewer than two reviewers, the prove returns OutcomeNegative (0) remediation: effort: Low diff --git a/probes/codeReviewTwoReviewers/impl.go b/probes/codeReviewTwoReviewers/impl.go index 9033368f20d..8ad11822822 100644 --- a/probes/codeReviewTwoReviewers/impl.go +++ b/probes/codeReviewTwoReviewers/impl.go @@ -7,7 +7,6 @@ package codeReviewTwoReviewers import ( "embed" "fmt" - "github.com/ossf/scorecard/v4/checker" "github.com/ossf/scorecard/v4/finding" "github.com/ossf/scorecard/v4/probes/utils" @@ -16,13 +15,13 @@ import ( //go:embed *.yml var fs embed.FS -const probe = "minimumCodeReviewers" +const probe = "codeReviewTwoReviewers" const minimumReviewers = 2 const noReviewerFound = -1 func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { rawReviewData := &raw.CodeReviewResults - return CodeReviewRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) + return codeReviewRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) } /* @@ -32,7 +31,7 @@ func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { ** there are a number of unique reviewers for each changeset. */ -func CodeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, +func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, positiveOutcome, negativeOutcome finding.Outcome, ) ([]finding.Finding, string, error) { var findings []finding.Finding @@ -40,14 +39,12 @@ func CodeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri changesets := reviewData.DefaultBranchChangesets for i := range changesets { data := &changesets[i] - //fmt.Printf("\n[DATA] %v", data.Author) if data.Author.Login == "" { return utils.AuthorNotFound(findings, probeID, fs) } reviewersList := make([]string, len(data.Reviews)) for i := range data.Reviews { reviewersList[i] = data.Reviews[i].Author.Login - //fmt.Printf("\n\t[REVIEW] %v", reviewersList[i]) } numReviewers := utils.UniqueReviewers(data.Author.Login, reviewersList) if numReviewers == noReviewerFound { From 58951c5c461b93f0f887dc0667c862b149cc67eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Tue, 18 Jul 2023 11:46:57 +0300 Subject: [PATCH 018/125] rename unique code reviewers probe MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- .../def.yml | 0 .../impl.go | 14 +++++++------- probes/entries.go | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) rename probes/{uniqueCodeReviewers => codeReviewTwoReviewers}/def.yml (100%) rename probes/{uniqueCodeReviewers => codeReviewTwoReviewers}/impl.go (92%) diff --git a/probes/uniqueCodeReviewers/def.yml b/probes/codeReviewTwoReviewers/def.yml similarity index 100% rename from probes/uniqueCodeReviewers/def.yml rename to probes/codeReviewTwoReviewers/def.yml diff --git a/probes/uniqueCodeReviewers/impl.go b/probes/codeReviewTwoReviewers/impl.go similarity index 92% rename from probes/uniqueCodeReviewers/impl.go rename to probes/codeReviewTwoReviewers/impl.go index 147e656ff11..9033368f20d 100644 --- a/probes/uniqueCodeReviewers/impl.go +++ b/probes/codeReviewTwoReviewers/impl.go @@ -2,11 +2,12 @@ // Licensed under the Apache License 2.0 // SPDX-License-Identifier: Apache-2.0 -package uniqueCodeReviewers +package codeReviewTwoReviewers import ( "embed" "fmt" + "github.com/ossf/scorecard/v4/checker" "github.com/ossf/scorecard/v4/finding" "github.com/ossf/scorecard/v4/probes/utils" @@ -24,17 +25,16 @@ func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { return CodeReviewRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) } - /* ** Looks through the data and validates author and reviewers of a changeset ** Scorecard currently only supports GitHub revisions and generates a positive ** score in the case of other platforms. This probe is created to ensure that ** there are a number of unique reviewers for each changeset. -*/ + */ func CodeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, positiveOutcome, negativeOutcome finding.Outcome, - ) ([]finding.Finding, string, error) { +) ([]finding.Finding, string, error) { var findings []finding.Finding leastFoundReviewers := 0 changesets := reviewData.DefaultBranchChangesets @@ -58,18 +58,18 @@ func CodeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri } if leastFoundReviewers >= minimumReviewers { f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewers found for at least one changeset, %v wanted.", leastFoundReviewers, minimumReviewers), - nil, positiveOutcome) + nil, positiveOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } findings = append(findings, *f) } else { f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewer(s) found for at least one changeset, %v wanted.", leastFoundReviewers, minimumReviewers), - nil, negativeOutcome) + nil, negativeOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } findings = append(findings, *f) } return findings, probeID, nil -} \ No newline at end of file +} diff --git a/probes/entries.go b/probes/entries.go index 115be768b86..6ef64c96e21 100644 --- a/probes/entries.go +++ b/probes/entries.go @@ -21,7 +21,7 @@ import ( "github.com/ossf/scorecard/v4/probes/toolPyUpInstalled" "github.com/ossf/scorecard/v4/probes/toolRenovateInstalled" "github.com/ossf/scorecard/v4/probes/toolSonatypeLiftInstalled" - "github.com/ossf/scorecard/v4/probes/uniqueCodeReviewers" + "github.com/ossf/scorecard/v4/probes/codeReviewTwoReviewers" ) // ProbeImpl is the implementation of a probe. From aba6bdee8a9dadc9dacfc07f43a7be68b2149c1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Tue, 18 Jul 2023 15:56:38 +0300 Subject: [PATCH 019/125] implement codeApproved probe, validation of reviews needs fixing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeApproved/def.yml | 20 +++++++++++ probes/codeApproved/impl.go | 66 +++++++++++++++++++++++++++++++++++++ probes/entries.go | 7 ++-- 3 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 probes/codeApproved/def.yml create mode 100644 probes/codeApproved/impl.go diff --git a/probes/codeApproved/def.yml b/probes/codeApproved/def.yml new file mode 100644 index 00000000000..6d001829403 --- /dev/null +++ b/probes/codeApproved/def.yml @@ -0,0 +1,20 @@ +# © 2023 Nokia +# Licensed under the Apache License 2.0 +# SPDX-License-Identifier: Apache-2.0 + +id: codeApproved +short: Check that all recent changesets have been approved by someone who is not the author of the changeset. +motivation: > + To ensure that the review process works, the proposed changes + should have a minimum number of approvals. +implementation: > + The implementation looks for the reviews of a changeset and that their state is "APPROVED" +outcome: + - If all changesets were approved, the probe returns OutcomePositive (1) + - If a changeset was not approved, the prove returns OutcomeNegative (0) +remediation: + effort: Low + text: + - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. + markdown: + - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. \ No newline at end of file diff --git a/probes/codeApproved/impl.go b/probes/codeApproved/impl.go new file mode 100644 index 00000000000..9cfff1f6b70 --- /dev/null +++ b/probes/codeApproved/impl.go @@ -0,0 +1,66 @@ +// © 2023 Nokia +// Licensed under the Apache License 2.0 +// SPDX-License-Identifier: Apache-2.0 + +package codeApproved + +import ( + "embed" + "fmt" + + "github.com/ossf/scorecard/v4/checker" + "github.com/ossf/scorecard/v4/finding" + "github.com/ossf/scorecard/v4/probes/utils" +) + +//go:embed *.yml +var fs embed.FS + +const probe = "codeApproved" + +const noReviewerFound = -1 + +func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { + rawReviewData := &raw.CodeReviewResults + return approvedRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) +} + +/* +** Looks through the data and validates that the changesets have been approved +*/ + +func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, + positiveOutcome, negativeOutcome finding.Outcome, +) ([]finding.Finding, string, error) { + var findings []finding.Finding + var unapprovedReviews = 0 + changesets := reviewData.DefaultBranchChangesets + var numChangesets = len(changesets) + for i := range changesets { + data := &changesets[i] + if data.Author.Login == "" { + return utils.AuthorNotFound(findings, probeID, fs) + } + for i := range data.Reviews { + if data.Reviews[i].State != "APPROVED" || data.Reviews[i].Author.Login == data.Author.Login { + unapprovedReviews += 1 + } + } + } + if unapprovedReviews == 0 { + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All %v changesets approved.", numChangesets), + nil, positiveOutcome) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + } else { + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unapproved reviews found among %v changesets.", unapprovedReviews, numChangesets), + nil, negativeOutcome) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + } + return findings, probeID, nil +} diff --git a/probes/entries.go b/probes/entries.go index 902272905f4..a965ea77c5e 100644 --- a/probes/entries.go +++ b/probes/entries.go @@ -15,13 +15,15 @@ package probes import ( + //codeApproved "command-line-argumentsC:\\Users\\abackman\\workspace\\opensource\\nokia_scorecard\\probes\\codeApproved\\impl.go" "github.com/ossf/scorecard/v4/checker" "github.com/ossf/scorecard/v4/finding" + "github.com/ossf/scorecard/v4/probes/codeApproved" +// "github.com/ossf/scorecard/v4/probes/codeReviewTwoReviewers" "github.com/ossf/scorecard/v4/probes/toolDependabotInstalled" "github.com/ossf/scorecard/v4/probes/toolPyUpInstalled" "github.com/ossf/scorecard/v4/probes/toolRenovateInstalled" "github.com/ossf/scorecard/v4/probes/toolSonatypeLiftInstalled" - "github.com/ossf/scorecard/v4/probes/codeReviewTwoReviewers" ) // ProbeImpl is the implementation of a probe. @@ -39,7 +41,8 @@ var ( toolSonatypeLiftInstalled.Run, } CodeReviewChecks = []ProbeImpl { - codeReviewTwoReviewers.Run, + //codeReviewTwoReviewers.Run, + codeApproved.Run, } ) From 35cc1d640439d7efc6234d8e30bba90a8e4a5fb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Tue, 18 Jul 2023 16:04:19 +0300 Subject: [PATCH 020/125] update codeApproved probe, validation of reviews needs fixing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeApproved/impl.go | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/probes/codeApproved/impl.go b/probes/codeApproved/impl.go index 9cfff1f6b70..c1e54a7432f 100644 --- a/probes/codeApproved/impl.go +++ b/probes/codeApproved/impl.go @@ -18,8 +18,6 @@ var fs embed.FS const probe = "codeApproved" -const noReviewerFound = -1 - func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { rawReviewData := &raw.CodeReviewResults return approvedRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) @@ -33,7 +31,7 @@ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string positiveOutcome, negativeOutcome finding.Outcome, ) ([]finding.Finding, string, error) { var findings []finding.Finding - var unapprovedReviews = 0 + var approvedReviews = 0 changesets := reviewData.DefaultBranchChangesets var numChangesets = len(changesets) for i := range changesets { @@ -42,12 +40,13 @@ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string return utils.AuthorNotFound(findings, probeID, fs) } for i := range data.Reviews { - if data.Reviews[i].State != "APPROVED" || data.Reviews[i].Author.Login == data.Author.Login { - unapprovedReviews += 1 + if data.Reviews[i].State == "APPROVED" || data.Reviews[i].Author.Login == data.Author.Login { + approvedReviews += 1 + continue } } } - if unapprovedReviews == 0 { + if approvedReviews < numChangesets { f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All %v changesets approved.", numChangesets), nil, positiveOutcome) if err != nil { @@ -55,7 +54,7 @@ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string } findings = append(findings, *f) } else { - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unapproved reviews found among %v changesets.", unapprovedReviews, numChangesets), + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("only %v approved reviews found among %v changesets.", approvedReviews, numChangesets), nil, negativeOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) From 82ed957e826cd5f1f7ca118b3061d39e9f32d9cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Wed, 19 Jul 2023 15:09:36 +0300 Subject: [PATCH 021/125] working version of codeApproved probe MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeApproved/impl.go | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/probes/codeApproved/impl.go b/probes/codeApproved/impl.go index c1e54a7432f..8df2456520d 100644 --- a/probes/codeApproved/impl.go +++ b/probes/codeApproved/impl.go @@ -10,7 +10,6 @@ import ( "github.com/ossf/scorecard/v4/checker" "github.com/ossf/scorecard/v4/finding" - "github.com/ossf/scorecard/v4/probes/utils" ) //go:embed *.yml @@ -24,7 +23,7 @@ func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { } /* -** Looks through the data and validates that the changesets have been approved +** Looks through the data and validates that each changeset has been approved at least once. */ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, @@ -34,27 +33,24 @@ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string var approvedReviews = 0 changesets := reviewData.DefaultBranchChangesets var numChangesets = len(changesets) - for i := range changesets { - data := &changesets[i] - if data.Author.Login == "" { - return utils.AuthorNotFound(findings, probeID, fs) - } - for i := range data.Reviews { - if data.Reviews[i].State == "APPROVED" || data.Reviews[i].Author.Login == data.Author.Login { + for x := range changesets { + data := &changesets[x] + for y := range data.Reviews { + if data.Reviews[y].State == "APPROVED" && data.Reviews[y].Author.Login != data.Author.Login { approvedReviews += 1 - continue + break } } } - if approvedReviews < numChangesets { - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All %v changesets approved.", numChangesets), + if approvedReviews >= numChangesets { + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets approved (%v out of %v).", approvedReviews, numChangesets), nil, positiveOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } findings = append(findings, *f) } else { - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("only %v approved reviews found among %v changesets.", approvedReviews, numChangesets), + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets approved. Found %v approvals among %v changesets.", approvedReviews, numChangesets), nil, negativeOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) From 55a1b7953157fd840e37435a179c4ad94f86220a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Wed, 19 Jul 2023 15:54:31 +0300 Subject: [PATCH 022/125] codeReviewed probe implemented MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeReviewed/def.yml | 20 +++++++++++++ probes/codeReviewed/impl.go | 58 +++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 probes/codeReviewed/def.yml create mode 100644 probes/codeReviewed/impl.go diff --git a/probes/codeReviewed/def.yml b/probes/codeReviewed/def.yml new file mode 100644 index 00000000000..355165d3bb0 --- /dev/null +++ b/probes/codeReviewed/def.yml @@ -0,0 +1,20 @@ +# © 2023 Nokia +# Licensed under the Apache License 2.0 +# SPDX-License-Identifier: Apache-2.0 + +id: codeReviewed +short: Check that there is some review activity for each changeset. +motivation: > + To ensure that the review process works, the proposed changes + should have a minimum number of reviews. +implementation: > + The implementation looks for the reviews of a changeset. +outcome: + - If all changesets have review activity, the probe returns OutcomePositive (1) + - If a changeset has no review activity, the prove returns OutcomeNegative (0) +remediation: + effort: Low + text: + - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. + markdown: + - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. \ No newline at end of file diff --git a/probes/codeReviewed/impl.go b/probes/codeReviewed/impl.go new file mode 100644 index 00000000000..cefa0902950 --- /dev/null +++ b/probes/codeReviewed/impl.go @@ -0,0 +1,58 @@ +// © 2023 Nokia +// Licensed under the Apache License 2.0 +// SPDX-License-Identifier: Apache-2.0 + +package codeReviewed + +import ( + "embed" + "fmt" + + "github.com/ossf/scorecard/v4/checker" + "github.com/ossf/scorecard/v4/finding" +) + +//go:embed *.yml +var fs embed.FS + +const probe = "codeReviewed" + +func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { + rawReviewData := &raw.CodeReviewResults + return reviewedRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) +} + +/* +** Looks through the data and validates that each changeset has been approved at least once. +*/ + +func reviewedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, + positiveOutcome, negativeOutcome finding.Outcome, +) ([]finding.Finding, string, error) { + var findings []finding.Finding + var numReviews = 0 + changesets := reviewData.DefaultBranchChangesets + var numChangesets = len(changesets) + for x := range changesets { + data := &changesets[x] + if len(data.Reviews) > 0 { + numReviews += 1 + } + } + if numReviews >= numChangesets { + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets have review activity (%v out of %v).", numReviews, numChangesets), + nil, positiveOutcome) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + } else { + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets have review activity. Found %v reviews among %v changesets.", numReviews, numChangesets), + nil, negativeOutcome) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + } + return findings, probeID, nil +} From 2e9758317f60aef24c08f744c91e3a9de4d03884 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Mon, 24 Jul 2023 16:05:39 +0300 Subject: [PATCH 023/125] clean up comments, add imports, run all probes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/entries.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/probes/entries.go b/probes/entries.go index a965ea77c5e..460e6716d8e 100644 --- a/probes/entries.go +++ b/probes/entries.go @@ -15,11 +15,11 @@ package probes import ( - //codeApproved "command-line-argumentsC:\\Users\\abackman\\workspace\\opensource\\nokia_scorecard\\probes\\codeApproved\\impl.go" "github.com/ossf/scorecard/v4/checker" "github.com/ossf/scorecard/v4/finding" "github.com/ossf/scorecard/v4/probes/codeApproved" -// "github.com/ossf/scorecard/v4/probes/codeReviewTwoReviewers" + "github.com/ossf/scorecard/v4/probes/codeReviewed" + "github.com/ossf/scorecard/v4/probes/codeReviewTwoReviewers" "github.com/ossf/scorecard/v4/probes/toolDependabotInstalled" "github.com/ossf/scorecard/v4/probes/toolPyUpInstalled" "github.com/ossf/scorecard/v4/probes/toolRenovateInstalled" @@ -33,7 +33,7 @@ var ( // All represents all the probes. All []ProbeImpl // DependencyToolUpdates is all the probes for the - // DpendencyUpdateTool check. + // DependencyUpdateTool check. DependencyToolUpdates = []ProbeImpl{ toolRenovateInstalled.Run, toolDependabotInstalled.Run, @@ -41,15 +41,16 @@ var ( toolSonatypeLiftInstalled.Run, } CodeReviewChecks = []ProbeImpl { - //codeReviewTwoReviewers.Run, codeApproved.Run, + codeReviewed.Run, + codeReviewTwoReviewers.Run, } ) //nolint:gochecknoinits func init() { All = concatMultipleProbes([][]ProbeImpl{ - /* Not our probes, not checked*/ //DependencyToolUpdates, + DependencyToolUpdates, CodeReviewChecks, }) } From 40eb06e354e3f9d3fd5d1b7e72d000614f89336b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Tue, 25 Jul 2023 09:39:58 +0300 Subject: [PATCH 024/125] update license comments MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeApproved/def.yml | 4 ++-- probes/codeApproved/impl.go | 4 ++-- probes/codeReviewTwoReviewers/def.yml | 4 ++-- probes/codeReviewTwoReviewers/impl.go | 4 ++-- probes/codeReviewed/def.yml | 4 ++-- probes/codeReviewed/impl.go | 4 ++-- probes/utils/code_review.go | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/probes/codeApproved/def.yml b/probes/codeApproved/def.yml index 6d001829403..3d72b695e9f 100644 --- a/probes/codeApproved/def.yml +++ b/probes/codeApproved/def.yml @@ -1,6 +1,6 @@ # © 2023 Nokia -# Licensed under the Apache License 2.0 -# SPDX-License-Identifier: Apache-2.0 +# Licensed under the BSD 3 Clause license +# SPDX-License-Identifier: BSD-3-Clause id: codeApproved short: Check that all recent changesets have been approved by someone who is not the author of the changeset. diff --git a/probes/codeApproved/impl.go b/probes/codeApproved/impl.go index 8df2456520d..cba0af9b536 100644 --- a/probes/codeApproved/impl.go +++ b/probes/codeApproved/impl.go @@ -1,6 +1,6 @@ // © 2023 Nokia -// Licensed under the Apache License 2.0 -// SPDX-License-Identifier: Apache-2.0 +// Licensed under the BSD 3 Clause license +// SPDX-License-Identifier: BSD-3-Clause package codeApproved diff --git a/probes/codeReviewTwoReviewers/def.yml b/probes/codeReviewTwoReviewers/def.yml index 87b258d77c1..a7422df35ff 100644 --- a/probes/codeReviewTwoReviewers/def.yml +++ b/probes/codeReviewTwoReviewers/def.yml @@ -1,6 +1,6 @@ # © 2023 Nokia -# Licensed under the Apache License 2.0 -# SPDX-License-Identifier: Apache-2.0 +# Licensed under the BSD 3 Clause license +# SPDX-License-Identifier: BSD-3-Clause id: codeReviewTwoReviewers short: Check that at least two reviewers review a change before merging. diff --git a/probes/codeReviewTwoReviewers/impl.go b/probes/codeReviewTwoReviewers/impl.go index 8ad11822822..d7cc0ca2349 100644 --- a/probes/codeReviewTwoReviewers/impl.go +++ b/probes/codeReviewTwoReviewers/impl.go @@ -1,6 +1,6 @@ // © 2023 Nokia -// Licensed under the Apache License 2.0 -// SPDX-License-Identifier: Apache-2.0 +// Licensed under the BSD 3 Clause license +// SPDX-License-Identifier: BSD-3-Clause package codeReviewTwoReviewers diff --git a/probes/codeReviewed/def.yml b/probes/codeReviewed/def.yml index 355165d3bb0..f34edff9b5a 100644 --- a/probes/codeReviewed/def.yml +++ b/probes/codeReviewed/def.yml @@ -1,6 +1,6 @@ # © 2023 Nokia -# Licensed under the Apache License 2.0 -# SPDX-License-Identifier: Apache-2.0 +# Licensed under the BSD 3 Clause license +# SPDX-License-Identifier: BSD-3-Clause id: codeReviewed short: Check that there is some review activity for each changeset. diff --git a/probes/codeReviewed/impl.go b/probes/codeReviewed/impl.go index cefa0902950..41cff7c7cba 100644 --- a/probes/codeReviewed/impl.go +++ b/probes/codeReviewed/impl.go @@ -1,6 +1,6 @@ // © 2023 Nokia -// Licensed under the Apache License 2.0 -// SPDX-License-Identifier: Apache-2.0 +// Licensed under the BSD 3 Clause license +// SPDX-License-Identifier: BSD-3-Clause package codeReviewed diff --git a/probes/utils/code_review.go b/probes/utils/code_review.go index dd725451992..967951d7275 100644 --- a/probes/utils/code_review.go +++ b/probes/utils/code_review.go @@ -1,6 +1,6 @@ // © 2023 Nokia -// Licensed under the Apache License 2.0 -// SPDX-License-Identifier: Apache-2.0 +// Licensed under the BSD 3 Clause license +// SPDX-License-Identifier: BSD-3-Clause package utils From 24933f328f4e99c7f7635afda120de58f6dee79c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= <88145164+andrelmbackman@users.noreply.github.com> Date: Wed, 26 Jul 2023 09:21:37 +0300 Subject: [PATCH 025/125] Update def.yml license MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman <88145164+andrelmbackman@users.noreply.github.com> --- probes/codeApproved/def.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/probes/codeApproved/def.yml b/probes/codeApproved/def.yml index 3d72b695e9f..2d31e954187 100644 --- a/probes/codeApproved/def.yml +++ b/probes/codeApproved/def.yml @@ -1,6 +1,7 @@ # © 2023 Nokia -# Licensed under the BSD 3 Clause license -# SPDX-License-Identifier: BSD-3-Clause +# Licensed under the Apache License 2.0 +# SPDX-License-Identifier: Apache-2.0 + id: codeApproved short: Check that all recent changesets have been approved by someone who is not the author of the changeset. @@ -17,4 +18,4 @@ remediation: text: - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. markdown: - - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. \ No newline at end of file + - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. From 87d95d394c495e1cb3e3310a83b8d2ca0c392dd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= <88145164+andrelmbackman@users.noreply.github.com> Date: Wed, 26 Jul 2023 09:22:48 +0300 Subject: [PATCH 026/125] Update def.yml license MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman <88145164+andrelmbackman@users.noreply.github.com> --- probes/codeReviewTwoReviewers/def.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/probes/codeReviewTwoReviewers/def.yml b/probes/codeReviewTwoReviewers/def.yml index a7422df35ff..5c9ec24d440 100644 --- a/probes/codeReviewTwoReviewers/def.yml +++ b/probes/codeReviewTwoReviewers/def.yml @@ -1,6 +1,6 @@ # © 2023 Nokia -# Licensed under the BSD 3 Clause license -# SPDX-License-Identifier: BSD-3-Clause +# Licensed under the Apache License 2.0 +# SPDX-License-Identifier: Apache-2.0 id: codeReviewTwoReviewers short: Check that at least two reviewers review a change before merging. @@ -18,4 +18,4 @@ remediation: text: - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. markdown: - - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. \ No newline at end of file + - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. From 06b0e03ade05abf24730a785b77c094d523abf62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= <88145164+andrelmbackman@users.noreply.github.com> Date: Wed, 26 Jul 2023 09:23:15 +0300 Subject: [PATCH 027/125] Update def.yml license MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman <88145164+andrelmbackman@users.noreply.github.com> --- probes/codeReviewed/def.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/probes/codeReviewed/def.yml b/probes/codeReviewed/def.yml index f34edff9b5a..1d1f3206689 100644 --- a/probes/codeReviewed/def.yml +++ b/probes/codeReviewed/def.yml @@ -1,6 +1,6 @@ # © 2023 Nokia -# Licensed under the BSD 3 Clause license -# SPDX-License-Identifier: BSD-3-Clause +# Licensed under the Apache License 2.0 +# SPDX-License-Identifier: Apache-2.0 id: codeReviewed short: Check that there is some review activity for each changeset. @@ -17,4 +17,4 @@ remediation: text: - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. markdown: - - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. \ No newline at end of file + - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. From afec9dbb89929aa262e7ef3018d507a1518f02ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= <88145164+andrelmbackman@users.noreply.github.com> Date: Wed, 26 Jul 2023 09:23:59 +0300 Subject: [PATCH 028/125] Update impl.go license MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman <88145164+andrelmbackman@users.noreply.github.com> --- probes/codeApproved/impl.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/probes/codeApproved/impl.go b/probes/codeApproved/impl.go index cba0af9b536..8df2456520d 100644 --- a/probes/codeApproved/impl.go +++ b/probes/codeApproved/impl.go @@ -1,6 +1,6 @@ // © 2023 Nokia -// Licensed under the BSD 3 Clause license -// SPDX-License-Identifier: BSD-3-Clause +// Licensed under the Apache License 2.0 +// SPDX-License-Identifier: Apache-2.0 package codeApproved From 570533dd6bcba8f1944034f28e2e28ff3af32cd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= <88145164+andrelmbackman@users.noreply.github.com> Date: Wed, 26 Jul 2023 09:24:25 +0300 Subject: [PATCH 029/125] Update impl.go license to Apache 2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman <88145164+andrelmbackman@users.noreply.github.com> --- probes/codeReviewTwoReviewers/impl.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/probes/codeReviewTwoReviewers/impl.go b/probes/codeReviewTwoReviewers/impl.go index d7cc0ca2349..8ad11822822 100644 --- a/probes/codeReviewTwoReviewers/impl.go +++ b/probes/codeReviewTwoReviewers/impl.go @@ -1,6 +1,6 @@ // © 2023 Nokia -// Licensed under the BSD 3 Clause license -// SPDX-License-Identifier: BSD-3-Clause +// Licensed under the Apache License 2.0 +// SPDX-License-Identifier: Apache-2.0 package codeReviewTwoReviewers From a1bd39d2e68fcfd47a8e98d673dc62ff69203074 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= <88145164+andrelmbackman@users.noreply.github.com> Date: Wed, 26 Jul 2023 09:24:53 +0300 Subject: [PATCH 030/125] Update impl.go license to Apache 2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman <88145164+andrelmbackman@users.noreply.github.com> --- probes/codeReviewed/impl.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/probes/codeReviewed/impl.go b/probes/codeReviewed/impl.go index 41cff7c7cba..cefa0902950 100644 --- a/probes/codeReviewed/impl.go +++ b/probes/codeReviewed/impl.go @@ -1,6 +1,6 @@ // © 2023 Nokia -// Licensed under the BSD 3 Clause license -// SPDX-License-Identifier: BSD-3-Clause +// Licensed under the Apache License 2.0 +// SPDX-License-Identifier: Apache-2.0 package codeReviewed From e7614892c475631299a4ebe53da32a01b1f26c7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= <88145164+andrelmbackman@users.noreply.github.com> Date: Wed, 26 Jul 2023 09:25:21 +0300 Subject: [PATCH 031/125] Update code_review.go license MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman <88145164+andrelmbackman@users.noreply.github.com> --- probes/utils/code_review.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/probes/utils/code_review.go b/probes/utils/code_review.go index 967951d7275..8bab7c43722 100644 --- a/probes/utils/code_review.go +++ b/probes/utils/code_review.go @@ -1,6 +1,6 @@ // © 2023 Nokia -// Licensed under the BSD 3 Clause license -// SPDX-License-Identifier: BSD-3-Clause +// Licensed under the Apache License 2.0 +// SPDX-License-Identifier: Apache-2.0 package utils @@ -48,4 +48,4 @@ func ReviewerNotFound(findings []finding.Finding, probeID string, } findings = append(findings, *f) return findings, probeID, nil - } \ No newline at end of file + } From 39b854831fbd9b298e33a3a84ccf736d0361288b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= <88145164+andrelmbackman@users.noreply.github.com> Date: Wed, 26 Jul 2023 09:27:38 +0300 Subject: [PATCH 032/125] Update entries.go; CodeReviewChecks now called CodeReview MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman <88145164+andrelmbackman@users.noreply.github.com> --- probes/entries.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/probes/entries.go b/probes/entries.go index 460e6716d8e..c9058767e5e 100644 --- a/probes/entries.go +++ b/probes/entries.go @@ -40,7 +40,7 @@ var ( toolPyUpInstalled.Run, toolSonatypeLiftInstalled.Run, } - CodeReviewChecks = []ProbeImpl { + CodeReview = []ProbeImpl { codeApproved.Run, codeReviewed.Run, codeReviewTwoReviewers.Run, @@ -51,7 +51,7 @@ var ( func init() { All = concatMultipleProbes([][]ProbeImpl{ DependencyToolUpdates, - CodeReviewChecks, + CodeReview, }) } From 613f48d2ed06851aa97dd8141cadcb9516e86065 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= <88145164+andrelmbackman@users.noreply.github.com> Date: Wed, 26 Jul 2023 11:37:33 +0300 Subject: [PATCH 033/125] Update impl.go, refactor codeReviewTwoReviewers; moved utility functions into impl.go MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman <88145164+andrelmbackman@users.noreply.github.com> --- probes/codeReviewTwoReviewers/impl.go | 46 ++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/probes/codeReviewTwoReviewers/impl.go b/probes/codeReviewTwoReviewers/impl.go index 8ad11822822..992e0e0ca0f 100644 --- a/probes/codeReviewTwoReviewers/impl.go +++ b/probes/codeReviewTwoReviewers/impl.go @@ -9,7 +9,6 @@ import ( "fmt" "github.com/ossf/scorecard/v4/checker" "github.com/ossf/scorecard/v4/finding" - "github.com/ossf/scorecard/v4/probes/utils" ) //go:embed *.yml @@ -40,15 +39,15 @@ func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri for i := range changesets { data := &changesets[i] if data.Author.Login == "" { - return utils.AuthorNotFound(findings, probeID, fs) + return authorNotFound(findings, probeID, fs) } reviewersList := make([]string, len(data.Reviews)) for i := range data.Reviews { reviewersList[i] = data.Reviews[i].Author.Login } - numReviewers := utils.UniqueReviewers(data.Author.Login, reviewersList) + numReviewers := uniqueReviewers(data.Author.Login, reviewersList) if numReviewers == noReviewerFound { - return utils.ReviewerNotFound(findings, probeID, fs) + return reviewerNotFound(findings, probeID, fs) } else if i == 0 || numReviewers < leastFoundReviewers { leastFoundReviewers = numReviewers } @@ -70,3 +69,42 @@ func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri } return findings, probeID, nil } + +func uniqueReviewers(authorLogin string, reviewers []string) int { + uniqueReviewers := 0 + for i := range reviewers { + duplicateCount := 0 + if (reviewers[i] == "") { + return -1 + } + for j := range reviewers { + if reviewers[j] == reviewers[i] && j > i { + duplicateCount++ + } + } + if reviewers[i] != authorLogin && duplicateCount == 0 { + uniqueReviewers++ + } + } + return uniqueReviewers +} + +func authorNotFound(findings []finding.Finding, probeID string, + fs embed.FS) ([]finding.Finding, string, error) { + f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprintf("Could not retrieve the author of a changeset."), nil) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + return findings, probeID, nil +} + +func reviewerNotFound(findings []finding.Finding, probeID string, + fs embed.FS) ([]finding.Finding, string, error) { + f, err := finding.NewNegative(fs, probeID, fmt.Sprintf("Could not retrieve reviewers of a changeset."), nil) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + return findings, probeID, nil +} From c0cb1a766374dab5c5161f857db5aefc6b474f11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= <88145164+andrelmbackman@users.noreply.github.com> Date: Wed, 26 Jul 2023 11:39:04 +0300 Subject: [PATCH 034/125] Delete code_review.go utilities MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit moved utility functions to the impl.go they are used in Signed-off-by: André Backman <88145164+andrelmbackman@users.noreply.github.com> --- probes/utils/code_review.go | 51 ------------------------------------- 1 file changed, 51 deletions(-) delete mode 100644 probes/utils/code_review.go diff --git a/probes/utils/code_review.go b/probes/utils/code_review.go deleted file mode 100644 index 8bab7c43722..00000000000 --- a/probes/utils/code_review.go +++ /dev/null @@ -1,51 +0,0 @@ -// © 2023 Nokia -// Licensed under the Apache License 2.0 -// SPDX-License-Identifier: Apache-2.0 - -package utils - -import ( - "github.com/ossf/scorecard/v4/finding" - "embed" - "fmt" -) - -// returns the number of unique reviewers that aren't the changeset author -func UniqueReviewers(authorLogin string, reviewers []string) int { - uniqueReviewers := 0 - for i := range reviewers { - duplicateCount := 0 - if (reviewers[i] == "") { - return -1 - } - for j := range reviewers { - if reviewers[j] == reviewers[i] && j > i { - duplicateCount++ - } - } - if reviewers[i] != authorLogin && duplicateCount == 0 { - uniqueReviewers++ - } - } - return uniqueReviewers -} - -func AuthorNotFound(findings []finding.Finding, probeID string, - fs embed.FS) ([]finding.Finding, string, error) { - f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprintf("Could not retrieve the author of a changeset."), nil) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - return findings, probeID, nil -} - -func ReviewerNotFound(findings []finding.Finding, probeID string, - fs embed.FS) ([]finding.Finding, string, error) { - f, err := finding.NewNegative(fs, probeID, fmt.Sprintf("Could not retrieve reviewers of a changeset."), nil) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - return findings, probeID, nil - } From aaa93c4be14691eb97b970e2283352843a8dc5f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Tue, 18 Jul 2023 11:54:32 +0300 Subject: [PATCH 035/125] rename probe MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/entries.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/probes/entries.go b/probes/entries.go index 6ef64c96e21..902272905f4 100644 --- a/probes/entries.go +++ b/probes/entries.go @@ -39,7 +39,7 @@ var ( toolSonatypeLiftInstalled.Run, } CodeReviewChecks = []ProbeImpl { - uniqueCodeReviewers.Run, + codeReviewTwoReviewers.Run, } ) From 155c59c92ea64810e954da6c4ce1928af2474e7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Tue, 18 Jul 2023 15:55:24 +0300 Subject: [PATCH 036/125] update codeReviewTwoReviewers definition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeReviewTwoReviewers/def.yml | 8 ++++---- probes/codeReviewTwoReviewers/impl.go | 9 +++------ 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/probes/codeReviewTwoReviewers/def.yml b/probes/codeReviewTwoReviewers/def.yml index 7dde0a6642c..87b258d77c1 100644 --- a/probes/codeReviewTwoReviewers/def.yml +++ b/probes/codeReviewTwoReviewers/def.yml @@ -2,16 +2,16 @@ # Licensed under the Apache License 2.0 # SPDX-License-Identifier: Apache-2.0 -id: minimumCodeReviewers -short: Check how many reviewers review a change before merging. +id: codeReviewTwoReviewers +short: Check that at least two reviewers review a change before merging. motivation: > To ensure that the review process works, the proposed changes should have a minimum number of approvals. implementation: > - The implementation looks for the number of reviewers for the last few pull requests. + The implementation looks for the number of reviewers for the last few changesets. Only unique reviewer logins that aren't the same as the changeset author are counted. outcome: - - If the changes had at least two reviewers, the probe returns OutcomePositive (1) + - If all the changes had at least two reviewers, the probe returns OutcomePositive (1) - If the changes had fewer than two reviewers, the prove returns OutcomeNegative (0) remediation: effort: Low diff --git a/probes/codeReviewTwoReviewers/impl.go b/probes/codeReviewTwoReviewers/impl.go index 9033368f20d..8ad11822822 100644 --- a/probes/codeReviewTwoReviewers/impl.go +++ b/probes/codeReviewTwoReviewers/impl.go @@ -7,7 +7,6 @@ package codeReviewTwoReviewers import ( "embed" "fmt" - "github.com/ossf/scorecard/v4/checker" "github.com/ossf/scorecard/v4/finding" "github.com/ossf/scorecard/v4/probes/utils" @@ -16,13 +15,13 @@ import ( //go:embed *.yml var fs embed.FS -const probe = "minimumCodeReviewers" +const probe = "codeReviewTwoReviewers" const minimumReviewers = 2 const noReviewerFound = -1 func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { rawReviewData := &raw.CodeReviewResults - return CodeReviewRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) + return codeReviewRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) } /* @@ -32,7 +31,7 @@ func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { ** there are a number of unique reviewers for each changeset. */ -func CodeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, +func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, positiveOutcome, negativeOutcome finding.Outcome, ) ([]finding.Finding, string, error) { var findings []finding.Finding @@ -40,14 +39,12 @@ func CodeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri changesets := reviewData.DefaultBranchChangesets for i := range changesets { data := &changesets[i] - //fmt.Printf("\n[DATA] %v", data.Author) if data.Author.Login == "" { return utils.AuthorNotFound(findings, probeID, fs) } reviewersList := make([]string, len(data.Reviews)) for i := range data.Reviews { reviewersList[i] = data.Reviews[i].Author.Login - //fmt.Printf("\n\t[REVIEW] %v", reviewersList[i]) } numReviewers := utils.UniqueReviewers(data.Author.Login, reviewersList) if numReviewers == noReviewerFound { From 422229425ff5a5fa25d3413f010e88b20e5d55a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Tue, 18 Jul 2023 15:56:38 +0300 Subject: [PATCH 037/125] implement codeApproved probe, validation of reviews needs fixing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeApproved/def.yml | 20 +++++++++++ probes/codeApproved/impl.go | 66 +++++++++++++++++++++++++++++++++++++ probes/entries.go | 7 ++-- 3 files changed, 91 insertions(+), 2 deletions(-) create mode 100644 probes/codeApproved/def.yml create mode 100644 probes/codeApproved/impl.go diff --git a/probes/codeApproved/def.yml b/probes/codeApproved/def.yml new file mode 100644 index 00000000000..6d001829403 --- /dev/null +++ b/probes/codeApproved/def.yml @@ -0,0 +1,20 @@ +# © 2023 Nokia +# Licensed under the Apache License 2.0 +# SPDX-License-Identifier: Apache-2.0 + +id: codeApproved +short: Check that all recent changesets have been approved by someone who is not the author of the changeset. +motivation: > + To ensure that the review process works, the proposed changes + should have a minimum number of approvals. +implementation: > + The implementation looks for the reviews of a changeset and that their state is "APPROVED" +outcome: + - If all changesets were approved, the probe returns OutcomePositive (1) + - If a changeset was not approved, the prove returns OutcomeNegative (0) +remediation: + effort: Low + text: + - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. + markdown: + - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. \ No newline at end of file diff --git a/probes/codeApproved/impl.go b/probes/codeApproved/impl.go new file mode 100644 index 00000000000..9cfff1f6b70 --- /dev/null +++ b/probes/codeApproved/impl.go @@ -0,0 +1,66 @@ +// © 2023 Nokia +// Licensed under the Apache License 2.0 +// SPDX-License-Identifier: Apache-2.0 + +package codeApproved + +import ( + "embed" + "fmt" + + "github.com/ossf/scorecard/v4/checker" + "github.com/ossf/scorecard/v4/finding" + "github.com/ossf/scorecard/v4/probes/utils" +) + +//go:embed *.yml +var fs embed.FS + +const probe = "codeApproved" + +const noReviewerFound = -1 + +func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { + rawReviewData := &raw.CodeReviewResults + return approvedRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) +} + +/* +** Looks through the data and validates that the changesets have been approved +*/ + +func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, + positiveOutcome, negativeOutcome finding.Outcome, +) ([]finding.Finding, string, error) { + var findings []finding.Finding + var unapprovedReviews = 0 + changesets := reviewData.DefaultBranchChangesets + var numChangesets = len(changesets) + for i := range changesets { + data := &changesets[i] + if data.Author.Login == "" { + return utils.AuthorNotFound(findings, probeID, fs) + } + for i := range data.Reviews { + if data.Reviews[i].State != "APPROVED" || data.Reviews[i].Author.Login == data.Author.Login { + unapprovedReviews += 1 + } + } + } + if unapprovedReviews == 0 { + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All %v changesets approved.", numChangesets), + nil, positiveOutcome) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + } else { + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unapproved reviews found among %v changesets.", unapprovedReviews, numChangesets), + nil, negativeOutcome) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + } + return findings, probeID, nil +} diff --git a/probes/entries.go b/probes/entries.go index 902272905f4..a965ea77c5e 100644 --- a/probes/entries.go +++ b/probes/entries.go @@ -15,13 +15,15 @@ package probes import ( + //codeApproved "command-line-argumentsC:\\Users\\abackman\\workspace\\opensource\\nokia_scorecard\\probes\\codeApproved\\impl.go" "github.com/ossf/scorecard/v4/checker" "github.com/ossf/scorecard/v4/finding" + "github.com/ossf/scorecard/v4/probes/codeApproved" +// "github.com/ossf/scorecard/v4/probes/codeReviewTwoReviewers" "github.com/ossf/scorecard/v4/probes/toolDependabotInstalled" "github.com/ossf/scorecard/v4/probes/toolPyUpInstalled" "github.com/ossf/scorecard/v4/probes/toolRenovateInstalled" "github.com/ossf/scorecard/v4/probes/toolSonatypeLiftInstalled" - "github.com/ossf/scorecard/v4/probes/codeReviewTwoReviewers" ) // ProbeImpl is the implementation of a probe. @@ -39,7 +41,8 @@ var ( toolSonatypeLiftInstalled.Run, } CodeReviewChecks = []ProbeImpl { - codeReviewTwoReviewers.Run, + //codeReviewTwoReviewers.Run, + codeApproved.Run, } ) From 1be6058b26235527d37489bc9321fdb7deac0c9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Tue, 18 Jul 2023 16:04:19 +0300 Subject: [PATCH 038/125] update codeApproved probe, validation of reviews needs fixing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeApproved/impl.go | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/probes/codeApproved/impl.go b/probes/codeApproved/impl.go index 9cfff1f6b70..c1e54a7432f 100644 --- a/probes/codeApproved/impl.go +++ b/probes/codeApproved/impl.go @@ -18,8 +18,6 @@ var fs embed.FS const probe = "codeApproved" -const noReviewerFound = -1 - func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { rawReviewData := &raw.CodeReviewResults return approvedRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) @@ -33,7 +31,7 @@ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string positiveOutcome, negativeOutcome finding.Outcome, ) ([]finding.Finding, string, error) { var findings []finding.Finding - var unapprovedReviews = 0 + var approvedReviews = 0 changesets := reviewData.DefaultBranchChangesets var numChangesets = len(changesets) for i := range changesets { @@ -42,12 +40,13 @@ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string return utils.AuthorNotFound(findings, probeID, fs) } for i := range data.Reviews { - if data.Reviews[i].State != "APPROVED" || data.Reviews[i].Author.Login == data.Author.Login { - unapprovedReviews += 1 + if data.Reviews[i].State == "APPROVED" || data.Reviews[i].Author.Login == data.Author.Login { + approvedReviews += 1 + continue } } } - if unapprovedReviews == 0 { + if approvedReviews < numChangesets { f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All %v changesets approved.", numChangesets), nil, positiveOutcome) if err != nil { @@ -55,7 +54,7 @@ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string } findings = append(findings, *f) } else { - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unapproved reviews found among %v changesets.", unapprovedReviews, numChangesets), + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("only %v approved reviews found among %v changesets.", approvedReviews, numChangesets), nil, negativeOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) From 1e1b7c9d231f4b7ff43300112aac4a1c942b2c67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Wed, 19 Jul 2023 15:09:36 +0300 Subject: [PATCH 039/125] working version of codeApproved probe MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeApproved/impl.go | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/probes/codeApproved/impl.go b/probes/codeApproved/impl.go index c1e54a7432f..8df2456520d 100644 --- a/probes/codeApproved/impl.go +++ b/probes/codeApproved/impl.go @@ -10,7 +10,6 @@ import ( "github.com/ossf/scorecard/v4/checker" "github.com/ossf/scorecard/v4/finding" - "github.com/ossf/scorecard/v4/probes/utils" ) //go:embed *.yml @@ -24,7 +23,7 @@ func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { } /* -** Looks through the data and validates that the changesets have been approved +** Looks through the data and validates that each changeset has been approved at least once. */ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, @@ -34,27 +33,24 @@ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string var approvedReviews = 0 changesets := reviewData.DefaultBranchChangesets var numChangesets = len(changesets) - for i := range changesets { - data := &changesets[i] - if data.Author.Login == "" { - return utils.AuthorNotFound(findings, probeID, fs) - } - for i := range data.Reviews { - if data.Reviews[i].State == "APPROVED" || data.Reviews[i].Author.Login == data.Author.Login { + for x := range changesets { + data := &changesets[x] + for y := range data.Reviews { + if data.Reviews[y].State == "APPROVED" && data.Reviews[y].Author.Login != data.Author.Login { approvedReviews += 1 - continue + break } } } - if approvedReviews < numChangesets { - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All %v changesets approved.", numChangesets), + if approvedReviews >= numChangesets { + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets approved (%v out of %v).", approvedReviews, numChangesets), nil, positiveOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } findings = append(findings, *f) } else { - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("only %v approved reviews found among %v changesets.", approvedReviews, numChangesets), + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets approved. Found %v approvals among %v changesets.", approvedReviews, numChangesets), nil, negativeOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) From 925387105810762f4f28a416a585d32c32b2d458 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Wed, 19 Jul 2023 15:54:31 +0300 Subject: [PATCH 040/125] codeReviewed probe implemented MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeReviewed/def.yml | 20 +++++++++++++ probes/codeReviewed/impl.go | 58 +++++++++++++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 probes/codeReviewed/def.yml create mode 100644 probes/codeReviewed/impl.go diff --git a/probes/codeReviewed/def.yml b/probes/codeReviewed/def.yml new file mode 100644 index 00000000000..355165d3bb0 --- /dev/null +++ b/probes/codeReviewed/def.yml @@ -0,0 +1,20 @@ +# © 2023 Nokia +# Licensed under the Apache License 2.0 +# SPDX-License-Identifier: Apache-2.0 + +id: codeReviewed +short: Check that there is some review activity for each changeset. +motivation: > + To ensure that the review process works, the proposed changes + should have a minimum number of reviews. +implementation: > + The implementation looks for the reviews of a changeset. +outcome: + - If all changesets have review activity, the probe returns OutcomePositive (1) + - If a changeset has no review activity, the prove returns OutcomeNegative (0) +remediation: + effort: Low + text: + - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. + markdown: + - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. \ No newline at end of file diff --git a/probes/codeReviewed/impl.go b/probes/codeReviewed/impl.go new file mode 100644 index 00000000000..cefa0902950 --- /dev/null +++ b/probes/codeReviewed/impl.go @@ -0,0 +1,58 @@ +// © 2023 Nokia +// Licensed under the Apache License 2.0 +// SPDX-License-Identifier: Apache-2.0 + +package codeReviewed + +import ( + "embed" + "fmt" + + "github.com/ossf/scorecard/v4/checker" + "github.com/ossf/scorecard/v4/finding" +) + +//go:embed *.yml +var fs embed.FS + +const probe = "codeReviewed" + +func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { + rawReviewData := &raw.CodeReviewResults + return reviewedRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) +} + +/* +** Looks through the data and validates that each changeset has been approved at least once. +*/ + +func reviewedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, + positiveOutcome, negativeOutcome finding.Outcome, +) ([]finding.Finding, string, error) { + var findings []finding.Finding + var numReviews = 0 + changesets := reviewData.DefaultBranchChangesets + var numChangesets = len(changesets) + for x := range changesets { + data := &changesets[x] + if len(data.Reviews) > 0 { + numReviews += 1 + } + } + if numReviews >= numChangesets { + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets have review activity (%v out of %v).", numReviews, numChangesets), + nil, positiveOutcome) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + } else { + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets have review activity. Found %v reviews among %v changesets.", numReviews, numChangesets), + nil, negativeOutcome) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + } + return findings, probeID, nil +} From 36e41ffbf8a1163d375710e518223636941ebe23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Mon, 24 Jul 2023 16:05:39 +0300 Subject: [PATCH 041/125] clean up comments, add imports, run all probes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/entries.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/probes/entries.go b/probes/entries.go index a965ea77c5e..460e6716d8e 100644 --- a/probes/entries.go +++ b/probes/entries.go @@ -15,11 +15,11 @@ package probes import ( - //codeApproved "command-line-argumentsC:\\Users\\abackman\\workspace\\opensource\\nokia_scorecard\\probes\\codeApproved\\impl.go" "github.com/ossf/scorecard/v4/checker" "github.com/ossf/scorecard/v4/finding" "github.com/ossf/scorecard/v4/probes/codeApproved" -// "github.com/ossf/scorecard/v4/probes/codeReviewTwoReviewers" + "github.com/ossf/scorecard/v4/probes/codeReviewed" + "github.com/ossf/scorecard/v4/probes/codeReviewTwoReviewers" "github.com/ossf/scorecard/v4/probes/toolDependabotInstalled" "github.com/ossf/scorecard/v4/probes/toolPyUpInstalled" "github.com/ossf/scorecard/v4/probes/toolRenovateInstalled" @@ -33,7 +33,7 @@ var ( // All represents all the probes. All []ProbeImpl // DependencyToolUpdates is all the probes for the - // DpendencyUpdateTool check. + // DependencyUpdateTool check. DependencyToolUpdates = []ProbeImpl{ toolRenovateInstalled.Run, toolDependabotInstalled.Run, @@ -41,15 +41,16 @@ var ( toolSonatypeLiftInstalled.Run, } CodeReviewChecks = []ProbeImpl { - //codeReviewTwoReviewers.Run, codeApproved.Run, + codeReviewed.Run, + codeReviewTwoReviewers.Run, } ) //nolint:gochecknoinits func init() { All = concatMultipleProbes([][]ProbeImpl{ - /* Not our probes, not checked*/ //DependencyToolUpdates, + DependencyToolUpdates, CodeReviewChecks, }) } From f51f1895c6d54cf38e14be92129e051ab49f594d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Tue, 25 Jul 2023 09:39:58 +0300 Subject: [PATCH 042/125] update license comments MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeApproved/def.yml | 4 ++-- probes/codeApproved/impl.go | 4 ++-- probes/codeReviewTwoReviewers/def.yml | 4 ++-- probes/codeReviewTwoReviewers/impl.go | 4 ++-- probes/codeReviewed/def.yml | 4 ++-- probes/codeReviewed/impl.go | 4 ++-- probes/utils/code_review.go | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/probes/codeApproved/def.yml b/probes/codeApproved/def.yml index 6d001829403..3d72b695e9f 100644 --- a/probes/codeApproved/def.yml +++ b/probes/codeApproved/def.yml @@ -1,6 +1,6 @@ # © 2023 Nokia -# Licensed under the Apache License 2.0 -# SPDX-License-Identifier: Apache-2.0 +# Licensed under the BSD 3 Clause license +# SPDX-License-Identifier: BSD-3-Clause id: codeApproved short: Check that all recent changesets have been approved by someone who is not the author of the changeset. diff --git a/probes/codeApproved/impl.go b/probes/codeApproved/impl.go index 8df2456520d..cba0af9b536 100644 --- a/probes/codeApproved/impl.go +++ b/probes/codeApproved/impl.go @@ -1,6 +1,6 @@ // © 2023 Nokia -// Licensed under the Apache License 2.0 -// SPDX-License-Identifier: Apache-2.0 +// Licensed under the BSD 3 Clause license +// SPDX-License-Identifier: BSD-3-Clause package codeApproved diff --git a/probes/codeReviewTwoReviewers/def.yml b/probes/codeReviewTwoReviewers/def.yml index 87b258d77c1..a7422df35ff 100644 --- a/probes/codeReviewTwoReviewers/def.yml +++ b/probes/codeReviewTwoReviewers/def.yml @@ -1,6 +1,6 @@ # © 2023 Nokia -# Licensed under the Apache License 2.0 -# SPDX-License-Identifier: Apache-2.0 +# Licensed under the BSD 3 Clause license +# SPDX-License-Identifier: BSD-3-Clause id: codeReviewTwoReviewers short: Check that at least two reviewers review a change before merging. diff --git a/probes/codeReviewTwoReviewers/impl.go b/probes/codeReviewTwoReviewers/impl.go index 8ad11822822..d7cc0ca2349 100644 --- a/probes/codeReviewTwoReviewers/impl.go +++ b/probes/codeReviewTwoReviewers/impl.go @@ -1,6 +1,6 @@ // © 2023 Nokia -// Licensed under the Apache License 2.0 -// SPDX-License-Identifier: Apache-2.0 +// Licensed under the BSD 3 Clause license +// SPDX-License-Identifier: BSD-3-Clause package codeReviewTwoReviewers diff --git a/probes/codeReviewed/def.yml b/probes/codeReviewed/def.yml index 355165d3bb0..f34edff9b5a 100644 --- a/probes/codeReviewed/def.yml +++ b/probes/codeReviewed/def.yml @@ -1,6 +1,6 @@ # © 2023 Nokia -# Licensed under the Apache License 2.0 -# SPDX-License-Identifier: Apache-2.0 +# Licensed under the BSD 3 Clause license +# SPDX-License-Identifier: BSD-3-Clause id: codeReviewed short: Check that there is some review activity for each changeset. diff --git a/probes/codeReviewed/impl.go b/probes/codeReviewed/impl.go index cefa0902950..41cff7c7cba 100644 --- a/probes/codeReviewed/impl.go +++ b/probes/codeReviewed/impl.go @@ -1,6 +1,6 @@ // © 2023 Nokia -// Licensed under the Apache License 2.0 -// SPDX-License-Identifier: Apache-2.0 +// Licensed under the BSD 3 Clause license +// SPDX-License-Identifier: BSD-3-Clause package codeReviewed diff --git a/probes/utils/code_review.go b/probes/utils/code_review.go index dd725451992..967951d7275 100644 --- a/probes/utils/code_review.go +++ b/probes/utils/code_review.go @@ -1,6 +1,6 @@ // © 2023 Nokia -// Licensed under the Apache License 2.0 -// SPDX-License-Identifier: Apache-2.0 +// Licensed under the BSD 3 Clause license +// SPDX-License-Identifier: BSD-3-Clause package utils From bf17b43f78f7e05f4d18fbef825b559285e62cd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Tue, 25 Jul 2023 13:23:47 +0300 Subject: [PATCH 043/125] update license comments MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeApproved/def.yml | 4 ++-- probes/codeApproved/impl.go | 4 ++-- probes/codeReviewTwoReviewers/def.yml | 4 ++-- probes/codeReviewTwoReviewers/impl.go | 4 ++-- probes/codeReviewed/def.yml | 4 ++-- probes/codeReviewed/impl.go | 4 ++-- probes/utils/code_review.go | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/probes/codeApproved/def.yml b/probes/codeApproved/def.yml index 3d72b695e9f..6d001829403 100644 --- a/probes/codeApproved/def.yml +++ b/probes/codeApproved/def.yml @@ -1,6 +1,6 @@ # © 2023 Nokia -# Licensed under the BSD 3 Clause license -# SPDX-License-Identifier: BSD-3-Clause +# Licensed under the Apache License 2.0 +# SPDX-License-Identifier: Apache-2.0 id: codeApproved short: Check that all recent changesets have been approved by someone who is not the author of the changeset. diff --git a/probes/codeApproved/impl.go b/probes/codeApproved/impl.go index cba0af9b536..8df2456520d 100644 --- a/probes/codeApproved/impl.go +++ b/probes/codeApproved/impl.go @@ -1,6 +1,6 @@ // © 2023 Nokia -// Licensed under the BSD 3 Clause license -// SPDX-License-Identifier: BSD-3-Clause +// Licensed under the Apache License 2.0 +// SPDX-License-Identifier: Apache-2.0 package codeApproved diff --git a/probes/codeReviewTwoReviewers/def.yml b/probes/codeReviewTwoReviewers/def.yml index a7422df35ff..87b258d77c1 100644 --- a/probes/codeReviewTwoReviewers/def.yml +++ b/probes/codeReviewTwoReviewers/def.yml @@ -1,6 +1,6 @@ # © 2023 Nokia -# Licensed under the BSD 3 Clause license -# SPDX-License-Identifier: BSD-3-Clause +# Licensed under the Apache License 2.0 +# SPDX-License-Identifier: Apache-2.0 id: codeReviewTwoReviewers short: Check that at least two reviewers review a change before merging. diff --git a/probes/codeReviewTwoReviewers/impl.go b/probes/codeReviewTwoReviewers/impl.go index d7cc0ca2349..8ad11822822 100644 --- a/probes/codeReviewTwoReviewers/impl.go +++ b/probes/codeReviewTwoReviewers/impl.go @@ -1,6 +1,6 @@ // © 2023 Nokia -// Licensed under the BSD 3 Clause license -// SPDX-License-Identifier: BSD-3-Clause +// Licensed under the Apache License 2.0 +// SPDX-License-Identifier: Apache-2.0 package codeReviewTwoReviewers diff --git a/probes/codeReviewed/def.yml b/probes/codeReviewed/def.yml index f34edff9b5a..355165d3bb0 100644 --- a/probes/codeReviewed/def.yml +++ b/probes/codeReviewed/def.yml @@ -1,6 +1,6 @@ # © 2023 Nokia -# Licensed under the BSD 3 Clause license -# SPDX-License-Identifier: BSD-3-Clause +# Licensed under the Apache License 2.0 +# SPDX-License-Identifier: Apache-2.0 id: codeReviewed short: Check that there is some review activity for each changeset. diff --git a/probes/codeReviewed/impl.go b/probes/codeReviewed/impl.go index 41cff7c7cba..cefa0902950 100644 --- a/probes/codeReviewed/impl.go +++ b/probes/codeReviewed/impl.go @@ -1,6 +1,6 @@ // © 2023 Nokia -// Licensed under the BSD 3 Clause license -// SPDX-License-Identifier: BSD-3-Clause +// Licensed under the Apache License 2.0 +// SPDX-License-Identifier: Apache-2.0 package codeReviewed diff --git a/probes/utils/code_review.go b/probes/utils/code_review.go index 967951d7275..dd725451992 100644 --- a/probes/utils/code_review.go +++ b/probes/utils/code_review.go @@ -1,6 +1,6 @@ // © 2023 Nokia -// Licensed under the BSD 3 Clause license -// SPDX-License-Identifier: BSD-3-Clause +// Licensed under the Apache License 2.0 +// SPDX-License-Identifier: Apache-2.0 package utils From 1a3929f98630a43bfcf27e4b68ed189525c8743b Mon Sep 17 00:00:00 2001 From: Naveen <172697+naveensrinivasan@users.noreply.github.com> Date: Wed, 5 Jul 2023 17:16:48 -0500 Subject: [PATCH 044/125] :seedling: Included unit tests (#3242) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Included unit tests Signed-off-by: naveensrinivasan <172697+naveensrinivasan@users.noreply.github.com> Signed-off-by: André Backman --- checker/raw_result_test.go | 48 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 checker/raw_result_test.go diff --git a/checker/raw_result_test.go b/checker/raw_result_test.go new file mode 100644 index 00000000000..7c519e73cb7 --- /dev/null +++ b/checker/raw_result_test.go @@ -0,0 +1,48 @@ +// Copyright 2023 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +package checker + +import ( + "testing" + + "github.com/ossf/scorecard/v4/finding" +) + +func TestFile_Location(t *testing.T) { + file := File{ + Type: finding.FileTypeSource, + Path: "bar.go", + Offset: 10, + EndOffset: 20, + Snippet: "some code", + } + + loc := file.Location() + + if loc.Type != finding.FileTypeSource { + t.Errorf("Expected loc.Type to be 'foo', got %v", loc.Type) + } + if loc.Path != "bar.go" { + t.Errorf("Expected loc.Path to be 'bar.go', got %v", loc.Path) + } + if *loc.LineStart != 10 { + t.Errorf("Expected *loc.LineStart to be 10, got %v", *loc.LineStart) + } + if *loc.LineEnd != 20 { + t.Errorf("Expected *loc.LineEnd to be 20, got %v", *loc.LineEnd) + } + if *loc.Snippet != "some code" { + t.Errorf("Expected *loc.Snippet to be 'some code', got %v", *loc.Snippet) + } +} From d67eb4a39b1d360fe69f55d3a3ae009c1aa7bf8c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 6 Jul 2023 00:17:37 +0000 Subject: [PATCH 045/125] :seedling: Bump golang.org/x/text from 0.10.0 to 0.11.0 (#3243) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [golang.org/x/text](https://github.com/golang/text) from 0.10.0 to 0.11.0. - [Release notes](https://github.com/golang/text/releases) - [Commits](https://github.com/golang/text/compare/v0.10.0...v0.11.0) --- updated-dependencies: - dependency-name: golang.org/x/text dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: André Backman --- go.mod | 2 +- go.sum | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index e6ae12206a0..0bbb29c8dd2 100644 --- a/go.mod +++ b/go.mod @@ -34,7 +34,7 @@ require ( github.com/xeipuuv/gojsonschema v1.2.0 go.opencensus.io v0.24.0 gocloud.dev v0.30.0 - golang.org/x/text v0.10.0 + golang.org/x/text v0.11.0 golang.org/x/tools v0.10.0 google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc // indirect google.golang.org/protobuf v1.31.0 diff --git a/go.sum b/go.sum index 8ee6abc722e..de4ca8445fd 100644 --- a/go.sum +++ b/go.sum @@ -2872,8 +2872,9 @@ golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= +golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From e8c2d850bff424601202bc748068cf9039de80c1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Jul 2023 12:36:19 -0500 Subject: [PATCH 046/125] :seedling: Bump golang.org/x/oauth2 from 0.9.0 to 0.10.0 (#3244) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.9.0 to 0.10.0. - [Commits](https://github.com/golang/oauth2/compare/v0.9.0...v0.10.0) --- updated-dependencies: - dependency-name: golang.org/x/oauth2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: André Backman --- go.mod | 12 ++++++------ go.sum | 18 ++++++++++++------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 0bbb29c8dd2..4040eedfd95 100644 --- a/go.mod +++ b/go.mod @@ -104,7 +104,7 @@ require ( github.com/spdx/tools-golang v0.5.2 // indirect github.com/zeebo/xxh3 v1.0.2 // indirect golang.org/x/mod v0.11.0 // indirect - golang.org/x/term v0.9.0 // indirect + golang.org/x/term v0.10.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/vuln v0.0.0-20230303230808-d3042fecc4e3 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc // indirect @@ -123,7 +123,7 @@ require ( require ( cloud.google.com/go v0.110.2 // indirect - cloud.google.com/go/compute v1.20.0 // indirect + cloud.google.com/go/compute v1.20.1 // indirect cloud.google.com/go/iam v1.1.0 // indirect cloud.google.com/go/storage v1.30.1 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect @@ -173,12 +173,12 @@ require ( github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect - golang.org/x/crypto v0.10.0 // indirect + golang.org/x/crypto v0.11.0 // indirect golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 - golang.org/x/net v0.11.0 // indirect - golang.org/x/oauth2 v0.9.0 + golang.org/x/net v0.12.0 // indirect + golang.org/x/oauth2 v0.10.0 golang.org/x/sync v0.3.0 // indirect - golang.org/x/sys v0.9.0 // indirect + golang.org/x/sys v0.10.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/api v0.128.0 // indirect google.golang.org/appengine v1.6.7 // indirect diff --git a/go.sum b/go.sum index de4ca8445fd..57d14a6fae0 100644 --- a/go.sum +++ b/go.sum @@ -180,8 +180,9 @@ cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOV cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI= -cloud.google.com/go/compute v1.20.0 h1:cUOcywWuowO9It2i1KX1lIb0HH7gLv6nENKuZGnlcSo= cloud.google.com/go/compute v1.20.0/go.mod h1:kn5BhC++qUWR/AM3Dn21myV7QbgqejW04cAOrtppaQI= +cloud.google.com/go/compute v1.20.1 h1:6aKEtlUiwEpJzM001l0yFkpXmUVXaN8W+fbkb2AZNbg= +cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= @@ -2458,8 +2459,9 @@ golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2Uz golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= -golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM= golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= +golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= +golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -2620,8 +2622,9 @@ golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU= golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= +golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= +golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -2655,8 +2658,9 @@ golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= -golang.org/x/oauth2 v0.9.0 h1:BPpt2kU7oMRq3kCHAA1tbSEshXRw1LpG2ztgDwrzuAs= golang.org/x/oauth2 v0.9.0/go.mod h1:qYgFZaFiu6Wg24azG8bdV52QJXJGbZzIIsRCdVKzbLw= +golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8= +golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -2837,8 +2841,9 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= +golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -2853,8 +2858,9 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.9.0 h1:GRRCnKYhdQrD8kfRAdQ6Zcw1P0OcELxGLKJvtjVMZ28= golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= +golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= +golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= From 6fc7a1c6673d4b9d4eb493756572b91ca59ea81f Mon Sep 17 00:00:00 2001 From: Gabriela Gutierrez Date: Fri, 7 Jul 2023 19:29:33 +0000 Subject: [PATCH 047/125] :book: Update Branch-Protection admin and non-admin requirements (#2772) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: Branch protection admin-only requirements Signed-off-by: Gabriela Gutierrez * docs: Branch protection requirements by tier Signed-off-by: Gabriela Gutierrez * docs: How get a perfect score in branch protection Signed-off-by: Gabriela Gutierrez * docs: Fix local images ref in doc Signed-off-by: Gabriela Gutierrez * docs: Fix typo Co-authored-by: Pedro Nacht Signed-off-by: Gabriela Gutierrez * docs: Fix check specific table of contents Signed-off-by: Gabriela Gutierrez * fix: Code owners setting is non admin Signed-off-by: Gabriela Gutierrez * docs: Fix branch protection applied not only to main branch Signed-off-by: Gabriela Gutierrez * docs: Add alt text for images Signed-off-by: Gabriela Gutierrez * docs: You can get a perfect score with non admin access Signed-off-by: Gabriela Gutierrez * docs: update max tier scores Signed-off-by: Gabriela Gutierrez * docs: update tier 1 max points explanation Signed-off-by: Gabriela Gutierrez * docs: Move changes to internal checks doc Move changes done in docs/checks.md to docs/checks/internal/checks.yaml. Signed-off-by: Gabriela Gutierrez * docs: Revert changes on checks doc Signed-off-by: Gabriela Gutierrez * docs: Fix admin settings evaluated on branch protection Signed-off-by: Gabriela Gutierrez * docs: Change branch protection model status checks Signed-off-by: Gabriela Gutierrez * docs: Change tiers score to expected score The expected score for the code to output is 3/10 for Tier 1 case and 7/10 for Tier 3 case. The scoring issue will be reported as bug. Signed-off-by: Gabriela Gutierrez * docs: Fix Tier 3 score Signed-off-by: Gabriela Gutierrez --------- Signed-off-by: Gabriela Gutierrez Co-authored-by: Pedro Nacht Signed-off-by: André Backman --- docs/checks/internal/checks.yaml | 18 ++++++------ ...branch-protection-settings-admin-token.png | Bin 0 -> 484124 bytes ...ch-protection-settings-non-admin-token.png | Bin 0 -> 484310 bytes docs/faq.md | 26 ++++++++++++++++++ 4 files changed, 35 insertions(+), 9 deletions(-) create mode 100644 docs/design/images/branch-protection-settings-admin-token.png create mode 100644 docs/design/images/branch-protection-settings-non-admin-token.png diff --git a/docs/checks/internal/checks.yaml b/docs/checks/internal/checks.yaml index 406d9871b60..51601c05a55 100644 --- a/docs/checks/internal/checks.yaml +++ b/docs/checks/internal/checks.yaml @@ -154,7 +154,7 @@ checks: status checks before acceptance into a main branch, or preventing rewriting of public history. - Note: The following settings queried by the Branch-Protection check require an admin token: `DismissStaleReviews`, `EnforceAdmin`, `StrictStatusCheck` and `RequireCodeownerReview`. If + Note: The following settings queried by the Branch-Protection check require an admin token: `DismissStaleReviews`, `EnforceAdmins`, `RequireLastPushApproval`, `RequiresStatusChecks` and `UpToDateBeforeMerge`. If the provided token does not have admin access, the check will query the branch settings accessible to non-admins and provide results based only on these settings. Even so, we recommend using a non-admin token, which provides a thorough enough @@ -191,7 +191,7 @@ checks: This test has tiered scoring. Each tier must be fully satisfied to achieve points at the next tier. For example, if you fulfill the Tier 3 checks but do not fulfill all the Tier 2 checks, you will not receive any points for Tier 3. - Note: If Scorecard is run without an administrative access token, the requirements that specify “For administrators” are ignored. + Note: If Scorecard is run without an administrative access token, the requirements that specify “For administrators” can be safely ignored, and scores will be determined as if all such requirements have been met. Tier 1 Requirements (3/10 points): - Prevent force push @@ -199,19 +199,19 @@ checks: - For administrators: Include administrator for review Tier 2 Requirements (6/10 points): - - Required reviewers >=1 - - For administrators: Last push review - - For administrators: Strict status checks (require branches to be up-to-date before merging) + - Require at least 1 reviewer for approval before merging + - For administrators: Require branch to be up to date before merging + - For administrators: Require approval of the most recent reviewable push Tier 3 Requirements (8/10 points): - - Status checks defined + - Require branch to pass at least 1 status check before merging Tier 4 Requirements (9/10 points): - - Required reviewers >= 2 + - Require at least 2 reviewers for approval before merging + - Require review from code owners Tier 5 Requirements (10/10 points): - - For administrators: Dismiss stale reviews - - For administrators: Require CODEOWNER review + - For administrators: Dismiss stale reviews and approvals when new commits are pushed GitLab Integration Status: - GitLab associates releases with commits and not with the branch. Releases are ignored in this portion of the scoring. diff --git a/docs/design/images/branch-protection-settings-admin-token.png b/docs/design/images/branch-protection-settings-admin-token.png new file mode 100644 index 0000000000000000000000000000000000000000..5cc0e70599f0687699ee193f0d1b09601ea83d65 GIT binary patch literal 484124 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 z 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

}bL6_;3|+O^&xRjvmA68xiVoUh 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

bgX9i@{rg>t~ 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 SNiv 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 z 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 tEB7d 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

Cf{z>UCsJ!#S{4b^1JbvM&^Hy@ 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

Rcs-fPuaeT7bxTur8pD-|P`%<*}XC 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 KT@0^Cff`43gfh|oJ_gqUW%IkZn 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 z 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 z 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≪ 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%0D=G9ycg+2i5tAmxo8k-e*^5#8L3<(Z27$ zdf}oz2Y!tQF%p4=3r%(m5}z(Moo-sb-nkr%W^A&Z6~0c+)4IKU;31U97c)f3 zOaA>CY0J7JHYS`l?Sq5pu&A9A-EN9bPEMENx8>D!_wM&@%#BypavLF2`(KnR{(xM zE0%vx>7W7yxDNnheVCybz3kNJfzG^ zH_nt7!1v^|KdGSN$Jc5LFk!R65m6?gUh{w@F4&=wQ6L39&k|}POgZ?bAUwLPj7@HN zX%Pe+WV*PPP+PcOt*@+{!TAXfQe@xip)J^_puff?#9!jmSzCXBSsp!=Hp~{dcW?&| z53LaGS4Vz7c0*_@zeg-#rxDCF*??hr2+lz@^ugwz3q#^(%HG1c)O{#fAmz?K7w6CC z`1`lZI=E{Shu;nnw~hFG|M@>gNH_k=Z~uIF^LS`z|MN@!`~ylUCFAd1_|Gpduog1e z_CLR4e>w1h|M63F-`W5Y`|m$lSMZQDG;06t-QX)Uxc}bW|N1TRSpGM@O~HKRSrJB0 z^lY;7P+ml+&s$*cgW1-^!~_8=*v_BZip>ztF(fM?HtONfig&K?Ti~zZ@4VS4$UsLS zVRN_w!4SF@)Z%+~rG=b;wLS&tJ&f|W>z8gg??F;CsYwJHA=RnFUp2QtS`1~ml@(`c z6wG3XBHZ146ti+~ikK7|qIQ8T@nInMaD3r7%mMhp`0*>~^rl|s{k^UiHY(q2q@jL0 z{ra_=yuAGHfd>!R4-mP(@Y05^bB4_MY5aR{EYVP{z1XB18wK~ALbd}Ahvk@+(Q`*# zF;EeSaMV<6)K9XC@`QmDb6=Qsyd4o{Xn4%=6L*$e$zg^58HC}ARXk!Q?A!I{8rz@^#G}HXM z#A;E=G9Mzq3EpklW(1mpZd^bsl)Pcj4S#-5(U-`S!?Zg{&&(ws;je(GE_uBF@-3-( zyV$ayfWZn_2JmOt$Oay~uiV{m4IKl96vBfpw?d?P3jIm-r&TrjQOl?!uH#)nC8!g1 zbmy7L4cp-}$6Y=}hG`4!=7;H5|2`WwRM1Rsfe*HHz=w?b+0zJw(Y|2}X29qM+bOQ@ zuC9bm!X6&{V0J0{x1aQn178HCo!#AwanvFN{lR-2F<>o(sn~ypEH~0IL6HkQBAzl1 z+ri+FyU_0qFk27?E^7bB=H(XvM27DED7_Bo1hu+A$~WwdN&K316(^w``SZ+KtiYqu z4>ehA5-jQpDY0o6Q4J6L*&XNl^rSOCjNZ6XVXBwfe#Yr&_rxbMh3L_yuaQ&jWigKh zvm7HalHx)|#V;JARU0|}eZrIsq<*ZTNOHk~RttOv`w^s-M5;NYI`dSt5!k_C3vcNo zqG_NCCl#RBx@u4KPXs5xNJ;3MYA--R0|&FEysL+YDojh5cL(7zj@}KB;5RflSe^#L zhp9g6`T3Vo9)XVd4JQ|8BEyEE$B)+}8Vu$K3;@XC=HikJvm&Nuu1?3*L)kr209pa> z$?A%;rza_80j@W&w(Cy}LOz6VKlSDfCS^EvC!K{&o`{L*?VSO9j^+Yzs18>i#$Mdm zw66nuHkh@&NQNpaOZYisgU0|e{sHW_gk2Z!WOv>{(1bdRU#;ib7f~MLK`t-ox2bZQ zR8vlb3f zM~pVQ=$eDyBW`2bUP*}uW*DNu2JQmnN(bF7J|vJJgg4keysJLX+8}vA0mS&OU3~jr zMDIs%Qq8#o*Xs)6oDX;5Mu2*`xV*rA=jy?$vRZryuGYj1PAD$$O<*;B^V|z5`#TWA z1*acG$2gMxeSK{XmGExO3c?J>Rm^*dtd}AlR7{Nx4MJ2DZfI%BkK@e&1-p6kW_kHL zY+Les8V%CN{T{uMjJDxU%+*jFgF+pR)!3K?bUvAxwpLab7xuTp=lkpDPb>^vSlnvq zcb80PHpikeCEkjq`GMos6+X>hX>i-o#VG(+MbQaRP>Q1`;UwEms>n1)`7%@GSb{eRZs);t4hn4AU?PC@3n9Ge z0@NA`%S2QiiayCBR@8n#Z(&+5utPzn?sXiF2#}t*)&#d04*TnRZti$8oCe*f0#FW_ zZdrz+6(v1#^$Pa!1Jet~4L13{a_C9=5Z!B?iTokpFKcH+7W=2}&9EUfdUD zo)M_2@bu23>@@MF>Bm6@llGNOxN>^^`mOpAPceRDwa{DnRF`|st|&+1A_Ixv69&dbj({@yA&49n<;$m}sMF`X8A-|5(=&@6J@heZVo z7-C`7`QO-lGa7>u)EFB0}m zxjKYS!c2pR4Fpc5H(E<)5*U|b3{YQU#3;oRhZ2%L)Yw)8pfzS*Ev_J6wfFRjE^ZEB zflmQE0>Va! zn-h{TFgiXsJtDHDj2naq_OR`dM&KfVC%R5|KJ5uGFLXJ0@C(paj6q@4f%?s5EekVq zfwxwm$Wv^OHTr^hX=@7z)u3TV98aq`u*UwhGg(>i8Pqul{d-I<5Y?S%;}4^;e>{Y{ zWg>yAloP46V${ex3v32)p#TI@c$IgQrfMK$%cTFkDfHWV(=dij0j- zMpl*~?h54D*=8M0?@$N7UUO_^jk{7NI(_@2)(51)kyS1diUYU;cf|?)bp^IGagkZ# z;SOlg;Js?kc4IY(0o*6pp7#C3;8zI=rojNnTyr*KN(*9=u6M7+=(MguV__=bRtWW0 zj80#6Te&g`{*eK@>m(r>!#s%9k z^H8-9d37z=4WI6gnUvIxFE)02d3qDhht-4+Feo4ZQHRu#d@&7;b0wz@NGJsI)DIq$ z&K`AxcA>hpGT@&Lu=HySe#jrU-{GSF>h@FIy%9+rK}Py$8quT2acuk}H&=z{x~!B) z@2l41Yijw)CzO$v7JC?ykXwoIgydn62IVbwLzoo+0^kL4b9EzOX2MuzLPd-myf&a~S$D7@9Lqs$ zLz#&5Jv=2i6JcD!>=imOk(qDv^Tl$bo;aWggIS*A-n}nimcTG+3WWmU(FwwLSY$Yr zi&(4! z65$CP3cHf*yx9VlJ#G}vc?Dijr3k@gq}yqvAxPkg2wH>x%hggu_s;No^?k_gVNTfg1MPe(1?A^h3A24>=Rqg5d&! z^#Uxs^X1!!c3pTmS#jkyg|w~s5l#W*0D(3|afZ+x4z(p}j1gk-gVFR_5vkr~2-gv2OvY?R zy^HeV4<9 z9OTatD~-7%H|l(nVsM#l2C-`gu;+phhCcQ6)D%uf*DcAyHhe3F6AUtQ9)qLC)%?fZ zRqk=U-el;r?C>&l@G7`Nc%yJkVYoWVxZQ>4&|&hc;#e&IrGAUw{BqUeqd0W#ELG?; z*iZ3muJLXGtQr3HVA^<4woa6`ryLwvkr5F%PpD*Rn9$hSkv(NV!rH5BJ>JEKC)mCP z_lbM)iQ<{gi61|IwjD)9`~5^mjaKB`7_BeH30%9f@-I%(7EWhrvb2cddio?xIC>QE z0g!+og%~TqS?Zw*u?X)vz8*X{j3hafV?;F9sf0nJlMER8~mZ| zxideZ`*fin?dn>=ccedS0Ax(dD!ObLGUfXk>>nlP30x0bCtmAgXOX^4!8?ydy+)TW zo@s(`0c>(`=w|4cySfVRCa+09i{q&M*vLxr))!=e(bbo=%O%08?hb_=c>U_1{B(y~ge7Qg4 zg@-q<6$`lJr}F4Q+rBHKsL~uCq@v*QLkfu!m(>f0Va$$k7_!P^SHsJh$NdGKTrpi*yk$6evGSvBwRcB9~ zVl&>0&OmpuC~H4z3j-3=xyMSH!$BzR-kqCvQvuWM_Naa>3;k7e}l~lH5^`go~quT25q^`0tPZG6z=u)9p8HG_;Dt= zc6ueIP3A+3NHFc+_@Kl|GBz^Kg+6D*PGnYA%Up-ReRHDZR zBnz!?HDP>mwnYCMj%bvxPLb~TL$KX|D5~`~GVH);mR>bZviJ%isywKPKLE`44Y4S> z-Z;}U6b(uc*tK7Z73USVKemI707K8I6 z-oFP@*kh*FuQz5x-&@1E*89j|^!|W?qNUPAKx2c|6h&(X4B3Lw8B&dOOU>l?)zs8$FCZFr41H^7s<~`3sU_92BIDVL4pj z0U!W`o0wH{$2HK-?lDxS*(`$6(kXPZTQ9O~H}&5Ro$ksudB7mMPg|u8TpvrHv|9q$ z;>mBPK9(uFd17_XjrQ`P@~ualTP)8p+P&OIzoSYqmpSy>zV};sfu-O+IJ50?aw585 zoJ)~NbOfA5BIcLGaDotvQbqjRmoHEv0ko^SbcwF?GYAC_LwVT~SEXeBf>+~Fq*r*% zj(eNf^^9TT!YxMA?Q5rE($XOkpu&q8ZMSa=sFKByu{62p=d2y>=O;H)T6F^0yQc3j zGGUbyt}!7#^RN6oG{r_5+Sp1s>(R8{DKQ|y1Of>l$mj5|Fe!O6_&Ram>xn?`fQw@d zt_2zaYwN-eqmtO1n6x9nF5=+0+fB%{g$t2vgz^hT2Dv8LP_u%XamUN{fcJi}QS~i*~orTih2PqOKEB~|v`S$>=0A}@pObkd>hZWG^aBMxz z%S$)$Dbtoi-b!9@97y|BY+z)>q?%!nIQdl;u-GxB$p!xy-Ii|MwW2A{sLy3zvX|PG zZhS}U{KZdNEmHmQ*Fc9c8{}!RzLJyBC6L$^_M2W5-O^!u% zNs)`ID;?hn<$}MBDD~SqSE(PHnSQ+ly;Ttx;jZSD205NOl=T=jI`<{5mfAgAmXV;o$%QTHW>U1l6n7PG(G)?3Gf;@2;sy;yU0@y39;k-C~bY42-En2=ekW1bI` zA#hz7iL_8L_UfD1#VNNui)+}3cFcFb$%Y0HcFTGs=6DJ+9IBQva2L!vA&!3M$u+5p zgjfjLY7vBJUyF_e&7DkRC90M6mw|y#9<(@rC?`@(sa2XLVYxULLtz+**cC`=%1^K% zcSJSV&G%C5WZYN@>r$L@z!Fo#rj<{fa)`o+JU9rAl~iBIh&axrv4G8o-dd1YjvFo)kdMgbReQ9*mA&g#An2cm=s*Xbn$lmX;puL;tnw}3;K7PNOv#;h{xOdq+jT8U zXPRVw=i0|ZIhO;-UVS)X)3{@|84Oy^6R0*yJPNjwfP~{M4-F3f#(SwYlFk&ShH43{ zy-&-_%L`nfrYGn!i}|WYgM$ovvw?3Y&p+mIil8-t@aUdYiO@0Y=2X^SjPzsQ%$0=q zIgQd(?a1|u3vp7-JLxl??YyrMK@8wya*tqag;yJu8A!N_$kXIC4rg(@fCgCHWLvA? zj4n?)gWv&;tnlAb=AyDKqEGJ9KR65Z~cHT|VKHaH&MRqLIZl(dra78_~J*T>3g zTUg&VBZNoJ=Q`$2pd}nRQol^^U!(k7`4@3a)jA!qfZep0_bfsceD|%8Bq~2GUIZv* z{M?2jc>*wRbtHs6(@tQfqRD6^ z6PCz7glPa#J1n8EjJf2BQKTq%S&^2daR_1r&u!Zh@eJknMg9Eh^($`ExN-^dJ`lO0 z>+C!Rq2JESj<&mZSC*D`PJJmC2!mqsf;vK({ecf!SoEX5!wY9Mn?!$FQX6k(=LCi` z6S>pp-s^50KK}}D9eyXk7f_v>z{jbyC(#ia(@x+G92Bf0l=R4t!r6^7UN34ghv$OMo1NlggFbu;zY2bbeH>~=bb-z2=K*QwdeOGmO4n-}Bc;|i0{Tx# zY;klDC^4ce2u)A3_X*Kx>t^S++pRSAojiXP*sLA5>uA^04ULY50};dC(cvht@MjT1 zs_uMu06!IW0dyXiT?s;kb_6*Xb%;ICuF4|ib1?d>@37GKre#irlCQAwAext z{r@Q1c7#X?4yimK?HJg+>0P~Lw9h~r@$NwVvO`SB!lD80%-(+O%ra&b4StseUT{G* zI3xrp1;yU}EMlO5FoSQd_sH#Ju5IaA+x~7gz&m(0LqHih>})E;R3QK=W4t&Y@5CHa z?+$2~dDgJH2t&U1>glzD-@w3Rpm{7TEEo!ggBL~%?C#C*t2m4{TSB6_H4!CxVFr{OP4%Ix5KEfdiMIr{YO`x2vX~Oe^#yj zu+>=+1r!!hPjD5y_W6i41%WYl9{Jq8=eO_)DHExYM}H-S9JRI01oMT^zmVE?*Zp=Z8O!>Z9PI{%D7ID{i{^2dd}E4=2RM#Zivz^L~j@G+3#+ zf@KvI?GN1XbRDaGiMmlQIAI+WUtm$x#5o2GLR0FN}8Qs-(5CS%qC3GA=|Qpd}w$cS6l> z#Svf1!_hmVI;+EsoqP`XJN!dcOs*Jb|*ZaFzQ$4b$Wm6;N#20#DyEm$_3 zj>b@04a?H=i(Y$uA^{*aG9!6}zCwS9&_U5%T}ZPMJT?Y7Frf@<;v`d0jsqJ}GtL(t zPNB;+5H2l&E--|&;q;j^o4p4mJ+=XuBj&dMwtlENseJLrk00GhOhFL6g@=d#iIrqg z-S}u^WCUwKBBk>to_XXZ&67+2Y^~Nu##m6qW&GOy0nabY^fh_1?rK*3gV4tyX3DGM zp)Lp#)KPjv37e3+71mO&FGul&oq0HS0G<&q4qq_8P8NjD?5ZFLyC=<2Q3RH0eSTB! z-@{e#%!7v$9H!k-kU6cuZda2T4OwZ_QWKiM;KgH-KQ>PuVH)6!vr5E0N=mxheL4oW z5&Mhc6LVBF*#FctrRVVAAPnuCA*WD{TX!0G%!mQiFG;G(%JnyI4k)H$V2>wGrC}EO z!U)UGG_+DU4#$kc&H}I^0&RIstLp35x=ve~3PYs>zYhlNTuS!9eumDx5+#v#yn!%= z1cn3!Syh2Fz-(nDS=m!RHQW>(pb8c)-CC8|Te-~{urT<9nl+#Q%58UEM;i@pEI2rL zZ~&%W)Bx9m0ZLb`iY1#E8xJFW>aq&DB?)nHE0r|k;>YML6kJ|9lPOrCdx0Wdw&Um= zF(jc3!2BqXryD-D4*gwBMD7iIPM0=Snu&v1ad37Pd~7Vdg0fAWU*g)?N?0=>gcT}6 zUg)!G4jqz;%mZw1#9VhrOC;_P-X4thQ&mYz=#gwGKYh^8vE}f~$TJur5Lt>Dn4tS? zl0>b3o2w^zqQ1m5ixQ8o$R@}8TKN3g>L?Gd>(#ZsG~rF*?FYA>)|XqdgOeIq1nohhZaRH*&fy92m!$fq13@tHgs8tP86jJ_$bJv^BV z6gkdFEqK}{#~mv5Kh4V_?mJeW^Wzf}yQ698wZD(W{aW4-{*B)*_{VbKZ|&nk)?60H z=q|>dpuZ7IfA|e$>;3F3_p07I*WBH+vdbsC?q#3L)-+PTR%3Sm77x3Pjj^7A?y0~B zA5%0xzWgD;oWM)ZMyMC@3*Og>__FDUWiCbNBQ`?iN{EgOlez`Qpp>1mimQa z5MMrY$@V6&d^pzSp2&5_U%!4ZThSdky5~E$`qn!7p~!~!23EHqte+w4jDTGZ2lLIRad(IUNdHW2OjnB?T;=0d76^56AbR-^Mi~_`Y-*D=? zoxr?Uj+?u?ZLPO0P-IAqh*<}U+j1fKK~;rv9yj!BfB7eYcebx5^j=F`9C(M}s1{?* zf+=6aPn(9VT5KZ;nZN@LTnSp_!nLnXzo;X(y?F6rU_c2K!LQMygHBaVJO|S3DqzE_ zv?yr99kXq|6l)b4<;Jas_&w}rKFa3+=f2VY=4#IJZh3{ke1#a80Qj`jp-9F~8}?(M zyGvw?DXI-fkTA;{AVY3*)X8%SF0nIvv{5Ci_de|siPT8>dO7^J&K6N5)nPMx2__TO zQbUwk*s_wA1V|jz7vJXQ5>irNIy>~DnLF$TT0$g6zn}lf!Y%E#><$&S+@8job8K9g zFOqUcOI@Hq6q6+NkqytUb98sb5Q;quxjidQ14BZz4}ZutEQDk3)Rq76E8veJ6z|=tNWH~j zfa}GmFskTLD6z#on2n;V&0&HGH(I&orF`l^ZZ{9+KEJJ@ZcIu>XPK`fZTSCsEF2h6In+9IY*`kdf{6@MKp!Z3fP1_L6(l%=b)# zzpL(Paq;tC`#P`q?36RTd04*M#G-UgAgijZnryPBQT)E+J%gb8_dd!SIn^9e|NF@= z?n%B~?=ksJ@r>`I%HrZ4DK2VSd{58K++3reFMaR*U!1!B@7GGw;di6Izi0><6sCIY zeK9G!$GlY}Lw5H{UKI|?dX4Hc+Qj3DSJ%y+hditJhh+p_o8DzBa1;9HM%k7Q%r1xD zDE7hAiI*8Z?_?tZTgQ=G_=A&7 zQr3YKNr!}czrHgIT`ZKhZzTWuMl@X86dlt3{^hf0JuE`FH~(>SCDYuliCUMuqFP)d zt7~X53t6Robo^ia%NobaWMLVZo=5TjeAf%cY29gN*(cIpEolAoCp6~+{(pMbB_GtR zvTsa{b^DwMeh*@6IjbF~2LJ&BE6y1=y!-Jc6Y&;wF%kI?ZKy2FYoD7@no$x^cHNtW zVO1q+6E4*Snz7S%o0$gv(EEk2x(g1hAw)bOBW&AYtoK z^km~7K5V3-TR*o|`={`0?E64_C<%~Do8_uqo%6>j7yRS1JDe6M&TKK>6=sCF55!(c zqkCFk(!mC%Vj$4>EFJ|E`XXlUoKF5owTnJ1XH+uiX`Ih*n&z!v5d!sq05U~(ZB zZ~uiDGtqc5Oc#O~y<0K!koX;8IvBK2MB@rT7^f%#a?fgo1tIHZ{5i2l(?km&FNoi| z1H0ti@YUxqO+#($hjg1j@NGK@(5u+ewL;d?Xqy~p`q+FQ_fq7s#$!XN$vTm8@i zikw<-*wg}@0R#Hs@cWO!41>H7o(z(NL)_#(T9 z`1xaAhLR3fc$r!<`fq+Xm3O zg3F5Z3BuHck1q+&ISx+#O|H~Q7Fjyn7pMsdMm#)VMl?;)1LtGCS;_6jFi8GE7A^RD;Ab;7()q@@=;ehlcQ zeFJJ3U~l;0jiFYz=B0y@A~ z997zDQ$Z{WxDSB>!R9`Mc^k-?uhMlx8o@8z3!*cG3*Fc!jj!RRyy(f?|(Rc^|Rd3~E13-df+WIbUp1nzvLyb#pnu z=i8kWCdofU(tGZVN$RLyC;6e8Vvf1g0n3?yBr)87C-4=qQ3GdXc`ZABAq#EwfhgYu ze0X;%a0%sPWDqxl>;ABLVY5);3&%Gs=u>g(+%}kFh4R0+;t&MCXKXXk*T(%IxCaI{ zK^S6qhTo{>nEx{lD-0#NUHuBjkWtMi(V$-ZdEpm!&-@_Gh<|5pRgOX2d!iN9JEER`BN zW8DI%G*3O9uS=fy!VZ+h0$7R9RaJQNlC{aj$MjrZ!DH@>UO^t!O%&TBcRlpVf%kx6 z`0dUERb~MJ?4M>+i3c!M;jw7rc2*O63`q@-N&S_z_ySL-{I2fq4P?JOj)%xWXAA#% z+Yh%R+RwY>4mrkLQHGZeYh{h!HeCg9UJXwo(r05`qi{%^PNdYi#l+36%HZeW_~zJ} z4$9Ethvb>YsN#!Xa=`gF9c!czfw030P1|(Hj$2_oZ?^CkQ1nKcUY1T-Y3Yi!)R{^T zQ8GCkOPG;bns5aV_<2qz={=r3=PAs$`W7KIa1&3!<4KHe3ZF{_hUF~7RN3IVtMu6T z_};&G#FMq{048fbOimuxBd!^~lp3)U$k*j)hn#=l(sTd+Z~^cMM!!cr>=7sL^8?cP zx{-c52M!w$SbBLfr1-^zz;VFC(PChRf>07v?^;{skT>L$VVAQj{3BFj|V zsQ^mC4(0_Jks+fKFqp=iBN!Q_?P^4Ol9?9aLpeH5&yf^3reRk1=8<`P%M1>eq2~WL7DS*FtySO9JCge!XRJJG~&0{gbX=HvG-^6CgFl(_yKf&h2IJQ4NsT(ZR9e-T*FFaQUCl`7M;XNoQ15X3W^QOs} z{Kc-SeAN<=K6vR8LJhDK>%jwPXduTWK>9f6>uApW4*22V&%Jzk0iPSK+NzaZ1YM`$SRviA??|$mE|dD~Hn-MOda;T( zr|COSGZgE`Z3~qJjaG_L4i-`=TC4EZ(n%(9LM@^#4`bPYq~0UsRKc(qii)~Ar3|3B zqZoxSIH(aT6Ns~sCj5lL3rj1{&CdtQ2 z0iUN7zP8O<;#5|o^929V4`{4t#D+1-MF{bqIU^-BG{+>#DvK!#(1oSu<2)N1go;W* zSO>eE9<|jQNW)X7rJ@WbR6XSaDWUj`r)Y|&Oh~i^MCq7)PhCBzlB#K5?GQB0Q1A9Y zQjmDq(64eG!j(i1QQBAMZ+RTkXFFWO8{q3}ja)r1z!Z;Dcx8qp_83Z$LWv5yld zbU`d?Ec9xdWv1flwd*-sUREH+8qkxiyNkX3eWI_1aGLJ-16%dzgciajc$nz0K|Z5* zuV-5^L)6{`{bUKOXp+k#30ZGUoWlq{URWt$I2{x&faq|1z|AF&!SHGh22;b<_gIDy zz*|I%0uO{i zCIDhPUdJ_H?X9PjDSG<*=Wt@>VX>1P%mMBqn?rE?Bf3wmwi35Tctj=XC=)$;pxW}e z=y>%19Cg`Kq)xAmbYfQHH+q7Sy}v=stBpM#hx~cSqME=@O0LsQ-zCEy6{Am&PP|fd zDRKvciwiGt7M*N)Gu)M*yN3a%QRB(e*?auKP+x-xrcpe#EZAfA2F+gO8g`%J%;e;a z6=AZ!l&-f1mgfqXNrS>4J243jBeA2SqcJ5DC%8db1?q;Xe2H-VM^s?Fm-qe2sf>q2 z-VN#TITF$EP9clIa6mzfP_R70T5NnhKOZS7Y3-1Ybn=3KC$da~V#AL;<|%Vz6d}65*9ZeHNJol zyT#P_ApkjpM4PUae5@$^#S3_Aa5z4C`SOVW!^%fgkeri~HD++deellzc;Ja}L3dorn z!AZ=wFPJW+9eI%ITecpv?aQ6ss<6AHTZuCBMMvF)H)G|!SNmlS{XwqlPo>N{Y%8A6 z-JKX`5H4WfxYZHyg;8)iLDvgRSEsJSp}Z#8m7Jd|%ggVLCTF_+>e*48ujexTsLqrt zdj%y3=GH4?lHl}>t(i2r`Pl7YHBh`}Ysa5P+d1yZHt2ufwV^a&eL=-?{(N0~`*jK> zP#g0iW7Qk8k%?k}s#mGxWP4_Sz80Q(PHEvi>x@92+ibQQ1c4-DXk#mQt@U`j_!CO?_wu({s zQ)>^%yWVls+j@+A6YlqVJ+gdy|I2m373=tq?I<7tS^V+Vyfa6Q?$)Oody(=jN)+b- zMn_{m)M1{3Wd2X|-qkDs_aPq=qX?G|ZqQ=CRr=glHf3mj8K=Zx0B@pU*&`}U#Jks+ zcvU(4>a56}A2@@>OHrlr%ACeJ>N#h78FIyJ>pl;vFGWRUT9fHmM%~mZu!(XBtOy*{ z&kt0rKplyvrx8~tHvu5;*8)RXNA6K)4i!OjZ_0^|Efv2 z4=45XBjrBlXvyyLP9zIIA$r$q^O^s>!`)B(zWx~ml@K4+_%xdkwrM4Z94ktZnAiy1 zMv;=Lgsw!{*rfWKD?3}yX_+AxIs09u>SzB2Wyn0{+E8^RT|aSSe} zv>557k!PJ}pEkxx;qQg}K;pg&dlyAs-~?%UMaI*XCOF?vnxI!=0?_{X-QySTTuk2n zK0+zB7?gX)!c1f@uP|MmTrL?_282bBluWo^p=V*#ZJA|_#FVjCO@}#6rMuQ;E_L(# zdwuO>z*!pAGt@LRrWXzga_sTJYBBw%u_0QL@?hrC4U>`|Bd)U9-w@mHM-EGV3rC7YLUpV?2;|-pCrw9*kH4C&-q65nQ3> z(Rs1Q_-Gdd1$Ps02Mo9whOq1nixF2!8tRd7pl}LaOGOc9LB=h3Ef7NDIOUjygtWcp zFrf8=IZUXp@4bt|c+$33*yvs*P=qJ}XR;MhaG9ejE=aL^$M8c+k$89lnPYrR=^0P8 zXFMU#Z!#Q|K}z=bjfCIpM&}!|CO6p@_>mLTImp5)`Wjy#?yx<#^kX4ryRGHaeb+gK z0zA<6Z`_C(>xo~W7EvPoqEJfKN=NDj%nX4QLXb=#Y)i6${BX&m^|8;Er%`CG;a;WE zXMp(Fs-Tk6A}A;bHa6$VdE6X1Q+~W3Hg|dJPM})*si|!dN#f(M9-&-tykiZpYJrIGu-M zgCVPPr^4DA(RIpq14JRQ1MTNZ=2OLAz99FZIe0J~wt>anJm9AB%(eFiZ^9<`2It_iDm6l0b{2$%iYgANZ51=OsY6@Bwr8 z@Cf42(~Yh}nK!WG8ZYW3lZT+R zV}YT_Pk3pC^Ki0Y#gc9mxy{oNm4s3i(MFUiO#*eGrjuPPcklLpVt_OQ`XTl~x7ljG z#Bdxa!U2Da<*iKQre2Pv`qH#%nS{t6_@o~%jD*X}8@$ZdulA@WHErLz75C5>g&m9U za~~h8miOUfKbbMfW5bKDOVNQ@>CF}NbrUfSNcju&5B~X_vle(FFelzG2KyaVGW0b+ z;_;*(rD3N2f=>5{|r!^_BP{Je0br0D>( z-+4_N$+o5*=OcAf$W{%w$+pB4U7 zT&yF{vB7u}r6U4{DqedmvJaQm{qdG$G3j9p%!=XbjS8#wPEaXEowkS% zr3<+Q!U}>^Yy208)N#W2?_WiNL>8RNw#AF2KG6C_N4{hCZ(i*C*?-fc{kh|;E8*)L zGkr*pu7dZMd#2GfK4OnSrXml{7J4ky-xW4f27|?$FP{HeTEYPX9B2(bF^*wD=b4b$ zy$GqpVMu4o91*4p;w%t1ELO;`Mch`icGb{H~f(2tQOj1$H?Fi$Wk=1IX<<`%^8TWH~{#eJwG-Rb{LxqzIReGGUSOWGn~&m>*_vY zRp5L_W(O}xNjk}b!8+V>FwIW6{{RU)jNu~I-i{sMN|D9wSo@r>lp9V%X$hw+BwI-N zii1&H8}hFL(_Dx4`T8G0o1LnAGB5eBan+8$R7rj8o4>TjmRxNdy)^L2?;9}d#`joM ze?Qco0a}Si=(swHvI3T_RSTDMT?X2bD$)_ZPXKBO@$~?-c4RYnTt_CzZFTc_ z(*5V)NMB<+q4E<2{Ooxb5lA~HcfO?}6OM8CgULs1q$T;t$04^w4@YvwO$JHC!mtPe zG8=UTay(xtG{n(8I0pppJWW~nGdwFa1&$ss#Jzt&Q>GJx{(uo~E9W^GIk|8yBkx#N zr^i4pDoT;{7?7(bunm{c5{Fk5DF{u3D$WwZ4szn-1C^XG&7D+QZ_G=L=fm`D z0PY2`fki?7QXn|Vh6`6s5yR`S0faFpQ+X;~I@4(pI|8`}4 zPx~{3a2{kr9~eWs#8Fae*Z;p;qSRs)VgXb{6^fpoVZ&ju-|wk-y23#E?bVWb3q)ziHRA%1^kGK9W8*e*Ekv_X02Q^oX;wr)iVflmB#iEt$URT_CC_HSwBv ze63Ia{T{C$oBYUnqMnq0XMJqk{ocPlvf}d72z~59;EAb76!%jlP_>W|BO$FKD&88N5im%NzYmEf&Qj3kX=i;aAWrJ0w(2DMy z&=Gu76Q1F4=kZWe0PVJ zc<21@i;v+$e$mPp?@EijdYUg;&tmxLu4n17yYFe4YZc~5rv;(6-(*Im9H$$N9=D{V z-Y+J0UWO%0pdqnI|GtJHLIpp6@Z8kg%wmdmvJ+dfI;;DSOa~3?@l(wEWnR_dLQyN2 zevg+X-A`;XYksermJ!Rkx!JdT_9uN=O53q8&K@)?MRPKMJLv~)3*Woz!y^N_{I6vk z=|%Y#Q@y?AIX8Z2%K{-F&of)apMAe`;%;Y5Ky#zV(BDt+H-MWxg># zXcebGmuaW;=$T^uRk2s@kGOYIiw)W3n4Q(jT2Zl_}{Jh3NQP~*yG)Uwc*09BMAEcy@qpPNL_Kf&?483t+bx>`v(1#c39K;=G~nE zbNj%vnu!{b{{*qeDS~S9CY3J2hOT0bIGOGL(s#nca~ z@z*pd_R}6V`_FS!R4pkf-9-?}uhh(W@h2Mn*TQ6TCV z#L)&u!aQx`BC{Sl%gAb1;o|Wh#B;)@itFtUsu5Q|b~cwvP)zqeyDT3ra%h6zP{1LTA!MR?GBwCXpp9cl!k!7ZM6~K za+2-ZW`c1M8%Bfex`*r3y7R)qT~paRcakH7Pq|ZBTW{<+&I=pV8k?p+?y<~`wqNH3 zGLFW`2mNBks^-n`d(YAv78zRp5e0(W4RfYt)JFf^fES< zpT)&V7OBpR+;J>Y5D8H{armqMTcv1^nNvZ+C)tcK?IzXl@q`Xio`C2w@1%wGwH;@F zU)@jX%L)~}1I3hG&ai4|^a(~mey^u~o|f;=KUsEc-wJZ)E&_0KCWZB1)z*`%(`D?% zwz7dXzI$^Iy#1?MQVm2@q|O9)A0LH(w5b$m4hQ?qoMPA4IM*HG!n*OZYM@7{IW_QN z2>&c=zAn9X(g0ADzTWkZze#8JnJA(RK7tEVU*Ia(N*)=uwoD7Ch)d`Oy0ILEb8jS~ z_lxE6SiVyNvvS)IVi*9R&VL_k#1$lk>R-ORs`w22Zow<_`2lId*9Y6WEjoUsnPaek z06+h$bdlf7@qUC~$<-Sd4O>zCBR%|3aqITCu+BH)wrHIY+#@5q0XQSYZb&rTU3`mC zZkhaEVvljVYQvTSd)|YJdv~JaqfM*~9i8F4(;84?xLK!-w{(MJy3wwA{d(=%0xQ8i zB_*Y!cW^ZAPEls6@cP=$mXvNPv2S7Lt1Bv`DW;cS@mEuK1XfIsLxYbH2ny7;n-kzrk=EoKXhfI*4 zU*hvd2+ddX&7wG=cWU)v%!AuwHY%$sdW(0-O_F&xNh8VEiPdgT3yF^`b#mc3m!i!- ziC=AqtA)U1Fm9gKHb=ZRVt-VW*BYzp8J(QQwUrHBbiBVlQ5kh>yYY(|%4&zNQ;6d1 z>!fEuSPZlpsc**dl%9l4>S(uDj$By4D!!@}ET<_naM} zLs?(3a=Ll5Hz>LN5XZU*h&3E)I|+bD8xc;ZZjLtVfqc}RW_0D+wY2;9E72WFD_p)^ z@>FdE6XnY^B==eU_;4vfnO!TH7gi|(%QNpZ^}?SCL^hP@Xlv^dT~))|iehE5ks$o| zk%gL%O*7{z#rdTM9{{4K+>eO#@+?XIQ{KYyE;F-5lDezKG#!t>+j;V`{Zy!xgnIIU zGobH{S6!c;7Iv24-nn;rnmIBscC>}~dUcl2J^8^RwE3?c3yV`{%#4g2(BhP>3kC~m z|8ZA-1*=U6{06(bUy01sZ$y1BL`U>t7KFsfH?}Q9N3xiW;6)1~d4sH2<=CgGJ!50< z#H6p&hSt8lx@)hA`8|UhHz2ONhzbSd34y`U?2!qH!*G>Qx!%#)VKAgv=q3!{g5Vw< zeR<(|w0`k2kE!Zmv3vK9q~vh%+I-TM)=ua>rpR#a^<~e6G$W$LksK06GEL`-&$_x) zCb6NLSX7k$;Gx-GnhQ5ZK5?KPGMl*~=)9uF8l0V#70-qmECKEC!h-x<`^i8*KT|uG zz|Z%s3d3(@&AqT-4pxrU29vMY_mrow=$$(YWwj0#5)aIpR-J0DE=54@M_e*|meZEm z{cYc_#JApdP=?ss?|rY9=A1co{#KWeOTY1i#=gCKL0eZAHRYz6-w$x0l1>H_1`O-I zWNVER^V2Y068)n#fG_)ww^2G8y4Mw+w|sbiSP$x~(HYtE4! zy4lL&(HziyB!vm`;QlO1DpGO|`}^z>Jx=M9iXd{ChHs=L)1lk#AzG=1_gwOw>PyIe)>jJMdw^su9Yyi&hpQPPrPXO%o?*o+GaXz z*GNGHYuhW?5Kz_Pe=@ZX)`;(=pVl(=KSYSq=g1d2OX$hy=!&}R+$vRDPO)<@ey_DA zoVe~F)9C0}B;gere!-fvn=-!1G}PUrd?BI1NGrqXtznXpSm>uCGnEwcKmUrHj0~0q z-73!8dqXb4kyP2FAR1nu=QvtQs4nw%mDOPp%7Yf!Y{3@c9fw;%*!j_rg>W&k;vD-) zds3xZHU>ppuY>UeKsTMoepqKiwFYJ#j zE1V)Cgg27(_LkUrO&>;4RzGt0NH^^)FiBIVce|kEp+e&|FkhE4u>NOp?t(c!)~`jT za{2}?&PGWg*X2FY4|!<3lD*_`Za7c6{&=UEgv-^VJ?;pDx$I2M21Xl^KTL)`5O^t- z+vaI`=O?&MoaTOKEj6pa=*p;K<0Zj$^h#)+A<|9lJYz76yoG~B79F^+QVJcnTOfsH*Vg( z*Fx8svj~~=KU8nbTRBg8PzIKvcknH=@Po?Wgg#rF+iFGsuU}iUg)d|^r%^T+9uWJ{ z_9Jh$=E8g*9<{d@h>UB7kj_}3@?Ydi8zwBy6+>PBpv zKfx$Gd-eL!DU`7JbM=ZmB5OZB_FeYOe}%Lp!nbFrfA0IS44|HSX&Zyb0i)s>{Y0KZ za&Dh*nfT|SuAf3oow0=XkymSWpk~_i50R=gy0ZOGyF*5p;Sl+UiOGhSjYVU8lmO=& zXN`l$k#!CADKKK1l{~Z%YtG#-G$g|Cmx*1w&EDpui`=$QhMa6rMCvr=ZJl(Qlb2iD zxI}VwS`6??(zw;wTaLspG}Ank$4nli0VfFwMMcGhDiLo0`-4uDzmTlWXs)k2Z#;Xb zr{oOA-fOf5cT{n-*NR$2AdBRo{pqnc6pXh*kw8%Q9jl|70dAv-H>wBMdTmA9O_wmLgtZIz#k~V4%4U%J3ccHJ#AC1<%JMb+9@NpCN?4Z*kAI(8$ zw0*yR-Ppd3mhGj=&pnsbcoxI#dcKt0t+n$Lr(qA!_Zu++k(FoYQLtA8+OxE_gY4)! z;EQG4^o>IkF8=vj?Z#odcKWlLDr`d=l7Su$<0okc-_+EG7JeTRc&JCivST+SZI+#1 zcE|9dH~#tl(riJHD`kpKZgZNEUi1|S`(kM9&I>po0nb1f(o9o7F5nTGcdwutFJXKV zU7ITMExv0kbt-+W>?VaYGa|2P;f&qSYr-}F$Smof!Vvdup( zMJs*a%cEx!v?~isDTM}3PRlO{#a;`rjC0|cHmjxUoYghOiQFT0UM4)p-r!b+-y|s5 zx3gHml9@lhQO!6!G4cM(bcTgil?0x0Yxk6fo~!Np>Z82F3oqGqp4Jr9D~WXJ-?_sU z_^DuR;a;@KMHD$RS^fLT2hC@5@L;2G>1@}9XHoz792fO<)ym)H=4MrJbZML~ZTFNn z%U|gZA8Oai%jVjx1PzLD!ZwtquPra|zVbTnGa`B|3CiwkJe5t~-%JL5a(=6lYb21r zp7SJumXeP1W9m|gY_LIb^$pc@eB9OxA2x0*sGwGF>ZIk4*Eo@`mZ)t~^uWsS!bk8Jf^tjka7Kp1s14XJ&&}Dk^_*~s3H3l=5N|$eKT|6(@6}{f^%`_;`Zr|&o`+lN# zbd<|+rVOHMl(rY{Onvub=q@W+^Y>X9K+J;?q+$2_L@9GVr?K7m zN>Ae?5)ceu(t^ZF)(LZX`&(=uAUz_GWL)OS3{>BTKjUkB`_ znv%}{7Pn3HqZReE1KrIu#QjOp3wWG1vgAp^wR!=;wvx|}EU(^o8z}=-AIBsF42_M> z%n1oa>86KdO5UP|4c4Vo2U`fv`5#UE6*XGwS%gtM(TS`cw6aQ3U?N7Wh}So89XsZJ z?ntH9k%{gNjdYN_pEE88$ON5DXfOo14ZYCnv@K@4_nNHYy%>YppFCTMyIeLka;Ztz zX{qF=7SG;WCpb82ISOA2xUIVD(SP$Zxh;E$BVL(7aqT5ee!sA=pu3{roiQ-PPCV57 zn?4dF*WY@HR?tQJ1YtkM7hj5 zcM02CZD4e!IOJ#=1Z>SQ(vdsK=vwiYSN5Ycx`l2!Au%YR47*kzF*Y0`;Un0D1hA+j z_2-UxR(|`2<0aKN~vP+uwJ*%juk>SZk`Gjlf%%C7W%^o5X_G7e9QL`d}~(G zN3$KtAuM5a={U9D*3)?1F8wzAo^tndP|!d^Xv*yV3_5=W8w%Tr2}{R!*<0*~JCu0w z`+9DUFO^PeX3CFyGWj`9kXkaviKB`Tt-zD=s08bu>82r(^TbA{-ayvFKVD3QT@er0 z7%%mr_dCrpBB&{t6;$yT4evWE8|QykzYK_rboFHKNcn=b)o&0E94XuG&E|@FNe>_t z#W}IcW3Gxn;GJs18!Z`zwni3eF$&-X9-@hR#8O(&ZEhd>3BnO$T$ohys@VnqaGTl4 zjYFz%MSfDp4w2G}@1?B@j%FP{h8x~qjpSumc~Dp89jVwCUFGN;`c6`_z$MlkXTp*9 zd!o<2+`yW6?!1!B*X36AHSD=#-0jBz zw;Emh&YG1?;*qs?JLfZ4eZBPA-zMp8A3of6%=3;y;Z@;*i3$}a=X33bPm4~2)lBMJ z_P~=-GhSI9Qfh7$`4f25Q9XG~_o`{pt5q(VD|)z*e7yVhrL`P;Q`&IlY@1lXg)j4T zfL+Wo(NErKc&pbK$*V^cW?f-UyY1>*^>Qw6wQ3jn7V8^Dl1&PD?cA^ zABN;QRnle?cn*Q3Y#^Db#MgcZrfexuL%zp4BOr<6TG~k zIsQp&{CZ#M!r0OM+DW(XB)=LS-T;|C)U7Meq=6%KyhrIS^tGwskb`DgS}f5VW(zY4 zFc9~4luNG-<6rr{BX9Y&UYtbqlOfBSj?P@{x;f?@Nnz^X?#3=)srlo%K@7L!y9}Q9O)xxJc{pSny)n( zo0}`w>tr9Zjh5K!u#w(ZA3G$v-oZm$KN&86nA*0wwpN3J3^0Lc-MVQG+OJRfMuSLY zqF5L~lj_?0wPH@_EGK)gf^U}#7x+c`8Y!hNv(W?&5h*1CrF>5{y{9Z|E5V$)zk=FY>_Z+r!w+B}aRrJLx_xZjOcDi1U0pCX9*gRf$}^P|ofZFOZt!d}jV8OJ2wsn<04LM(z00>{8m??g zB2@*dBz+7G@X`C>QdK5+jBg^`-b|x%;)U?Z9Q(bK2y_SYb@ieiM4sh{V<-W4RzV3gKP^h>m9@p^5b5Ze`hA}q{{uw;b@y3M9D0t?B9rJZX9l9P+iiR26 zEr;=U$7cYiy>a6+*LYhceVNaOqTEFjD=Q70lHgvKUztJv0U(`Avo@ujD0}s)s%TDb zu38FR|KMoS!h6jXe-`lJS&(AJ)2YfaQV8B%^<8@amUqVoeSdSa^fmx>PFL)n4Rxt8 z_&wPu>k2OuS6d?<6XhyCc_Qi0Uhk9aKiS!{UK>upLrl}eGB!}wB-U*$ME2RMklV4b zChW1<0|lfY!52RZUcY($ApXP(=egOHzP5SZVs`Dn^=iu&r(MIG2ic9bKMz?9vlX$n z{%iZbiiC2XdUVGMUrnbAk>H@8sQ+*oWVaU$@zA&JJ96Pd?P&k-GY+GO3;WMl2?z>i z8rOA{#YKckfeO5soVjireR8b*MN~0KbG*3wc=IO{YI2uO)N@Vn-8XnGwzL?1zHVhV zUN0?wS|MCywreFiE&uh-hedaWruI8Ffb%CG-e%FBUQwIPAF@`hy_AhP=aAKv;ynVS zCfXfNAeC-U8>k88*y!M)k%L)K+o$Q;H3_(n20mK?)Ai{=;Rs^E!#E@RVS7kjTzi&@ zLsPy`L`ipj`uNcVy&Lc>`-%6#&i(#cf2Pgb$7JfKLw~BgRx(zs51tv2g3I!!DUbbf zUf{D0jB{D8_&UmGSsp4c?@h*zs4J4&@0O<&DihX=4rvi|i{s;mDkA0loh|kCdq`?& z&4vG%xVWt9mvAKdaV7-lac{;hYnW?TaLz3|bh#3HzKHW5{0K0XZnh^2tm3BCD7@s= z$aTXjS7Mef2eW(5J0|Gi&zzH7G+sOQt#(ePXVy2^9#iJK@$-eS^TGi4fMxSLD_)B( zmblw~U%!G7{C4a1ZAQ*ugV(rBuGKA0mc8m{gs1Gv!ttTze20v++U7{2B^_sfr|eTx z!iFx({LiAx91BjZG47c?-51U>&>MQwhZ~-IP9uD`Cd_f5${MzEY+8B!CAu7;g(Bij znV3f6;7L4DTM#*0eRcSxRRNFj`l9Hoycvn;^8|uE{){BkdFd!4bI66BjUYBXW-m7$ z0tdy7a`yhp3Xi=+w{teng*1)Hp5b+NrrWgb6?ny^^&Qd0#VMgaV(K?|L$^l=Is zoN>+v=jhD`3R{AS)Tg%>7uK@!tZZC;B9`xw>##8ob!vCk{-_QUgaSID#-v5o8J1Ya zjr`>v&qvCO6Wu;KA6GNOmN&tuGg>t5soswC^FKtE4N|FY*1R)e=@{Kf5GL6ZS9Kq_ zo`LxyNU*D`ud;(U0KeHVF%F~@F2E<2t(F=+r?9YN_5z*b?MjR$52(JB#p!nD*neU7 z3>PF8t=5IXUiAC$SwDZj-gTW7g#>fWTv!MgjBsHO9jCsfWq+C}BBCij-;9Bgaodg! z{|&0@Fc^hpIwU`(JBXI5!q)A=HL*4t1upzBqBv}X?)Rimz7qdy_Vk+Nzh+K}sb_`(8$_ICRbQXzA36h?a@9ux-pya|c?ct@DSFY>4i^me`MrJd?us*sstLVALyGS*ANwdge*XMy^YtyC8y@`ja+?}6?TD`%O<5fM zwK`i8E+y03N4<`DFHMP}Vq%xovW{;N`uOkGz9+F})$5J~a?v%xN8m{e)t9=us7YDZ z=473>K+H~NQe=Hu5t9$|iRpl^7%by*K4!wj9_Z~EcgB+BF9;NZ9cX+>?M zCjJpVMSHz4|5mH)(POkl7F(h9h(|%hbG@l2YU4wwZ2rj!uMsZE1FwDl6 zY>p(QMQ2VE#)O(e#kB}gsCdOf90fdmCA~Evp~!)Jn&6(EK98;oQXYc)5c+H|_C3U= zrRtaOlDIla+?ZWlJS>)#n@fbs7PHWpCj?>bppV&vG+q*9%OV)sz?GuE!s>V#6@l1LneTo`yix zX6Snqj)MyR6HhD1#_vpi_$bQoF*0s=>lGj+1CL*&Kf|3(p(!i3KxqQW*1^T&pn0NX zJev+%Mih91y#?gtUv+kQ6kfS_eA*|U#Pq8gm)AZ!R2BZmeWSgn7-X|y+4FMjD8{w| zj!{1u?sy2W;RHl>FWR7BhRPs_zO9f*L}LZy`%g=drzCde#{EFoNd&`D6OPl;IzxzY zGJ6bjp{fFyPo=NS4O1VOiOh_F*o7=$o;$Uhg2K4&O$o-xKkYBT1)b469!b=t_=v^y zXSku274!!r_}~CKK|(A&c^akV~lPRG%ZUIgUf_MUuXLL^(CcF8eA*`{1sS~lgF{_XKnLfbR8V5 z0Ur!lKWc!TfPV{wWv$RBdevgx09RFqZ-r zqUP*7;$mX7q0WGR$ZuEbJiB4PI^%Dod)a?^d+#&A#^HI#tobS*s{Gc84cL(FcEW7+ zB+xeh9{L;eg(1s(&=tS66+R};&Y*wq?y2VM4rm9G3H1m2Tr7A#&=hJ7HO!*-RoUL2 zdr|x|h$NYr=)1Ch_hL~?RE-jQ^yh*+1tBav9E)_f^_#Cy6u;KtISj8`YU)!~EQ5VW zIbZ(`N+IqFdM=o|{sXck4-l3hTj_wijyu{fDJhe$FFhoyNHL888ZuCqq|>SY*ur>( zS<@7d95!ruXt(QPCw?d9E(EzY0%j<8@$-Rgn63>enjYkhEs1KZe0+Sc^x&pJs}B}k zqQv!8bA`#qga+Is;6K`s!VN1}$;ea!|8^MrF-`u(R-{B63cYQmBtGpRF7=K0Ge}6K^}~v8WDz&k(G-Kn6%qQb z;SZ4IRYRd8k_09v9EW(a|05Jzywds+)-za(nPQK2)t}Ldu7kGq9(EO`$n|qa=i#Su z?a(H^g5l^VCT8Yg+!bhmuBF|U%ZNjegX!K!^dQibt)~O;_25B!3^0OO6byy+9Pda; zJ)T>rxp8g|yB8M+ebw~*e4yAkEV!UHvW34~q|3|`mpmaSYZ&j$oQ#0(k@nn;ix`v! zLDP6o51~4`w!9o}OFx(*T@LKuPv{1I=Qh-s;4d9XmejebU#ujBIB_TwCGt6|l za;cnLH{XZ4J-)aum>w!!t`YPmM zRT)NV3Cgi!h1d(9a7jP}5Uyl*MoUD0%*>3uVEsm0N$WP;^PwZ=xSsJ2R5&20Gr?q! z5nWwfSnhUYSX_^Y?!tkEnx%gqd4}KWOTuN3@*P;aFz;8QAe6jzWPt}(>Uz3*k`C|_ zkW%Hg@4+I%JU;Ri$BjkeMzFJI;3q8{V)mqJ1lU*feK=PgB;=VG;DsQ7apF*6v8cwM zC{)x+Zia3ZYHK{d!03Lg&32e}v>b&Te#t9>xbC>L#W8jqB3ba7Zgyl@1G1gTbMunu z!^~gkAITo*?IjXKjOamNY;9@LkOvV9cOzLPt_CB5pv<)tp&>60SPP^SEGLHHIL4GY z1b{YN7%Ynb6tVcgOChgOZO0BzEJE^)fyvR#x$6l%0|Shrr!ZV_sRPo@$`wdQH<~o` zlHom#kUB%zhS3!#PW*)HU*(h8naS)_vOc)J2BDmFk@fPO9Xoblw%M!(IYo)}kchUn zvvZlq9)$Bo9D;$Am1JPrhuDm~GM5J#pUMFA;9bdMo?-L^q3Om-;0aSr1wwYs8@Q3Uxz1b?Q1J{J1qy!GYL zN@23?6{N@P8fNt|PbxltHfN3#!ZU%xUg)vc$9}?*EeP9lkjFL^)&jU+gEpU?C-eDW z{O_WRyDne3c$BPVCn~_ytY287DgpXM4q%g2`q#~a8HrI(Hq_b0Z$o%}xeXZOmIc3~~=-D3htgD=G= z*$Sq5CNsCYxqeR0Nm-gsUvrk;+r4jX*72D@^2&3a=zV~gD+;iZsAEXnU*`uQC=a^&8xDSiK5 zYuJVbv}3TzjDh~9ff)i2=ppU!HzH{dYo(i#vMV8KSc_SGTW4_Ob$GZA4*33R>=bD) zve8LJ4V0JxahMeZ*hyv_-DXYxd;q_$z)z8YmcS$=z?BYMV-d+xX1zOb7dv(=EHdph z{_T+s7Y>S^FORUPo_c$$PXsgV$A;4G8pb>t^go5nKi~huMi5@#P@;-GMm~g=SosQk z1YyjVexv9CoV7^1*I}(zX@TwqTrDa>F~ih#Fx=tKKmSDM!Wt}EMc2gv!5Q`F3g?*;lMhp>B$XZsMH^Mr_oGU8oo^G6gF+P(xe+(?+je4TuXTNg~dI z8?{PTUr|B!&p<}w7&bpzZSpBcB=Y^(`DG>}%7&&5wzJ8di7WeFrl(jNHHg1|lj0%c z6?)j4b#aj<*KTfRG&)#sk+^irU#0Q~zlr@Jt?);NM+JSkXgzJ}^$)3U3mw<(z&;l? zpjgzS%4&5)+h1>6M&U?%4faJQvz-pz)xrUwo+BIZ=Yv83e4tslAxnj7C9CfX zB&*dq$2G|EZNR*?%^tI9zAJiG}SjhUE=<{rB zax8wg^!4k|`o#nmtNH4r^XzJLR@zgAQH>3&d~V(kN`sdq zo4;L^bNS`L%XNzF&g`O3_djuuE3V9^)*P(VNU-IYx%sh+d)YKz=*&R{Z&;@?MrOxw z`Uc3WMiXo4#440QB(teJS~e4)M)-<+8xD$$=`i~;Tzo%Z7!?N1a;iOd69dnybn+S0dn|U}JcZ z^#8E;oCRp2W3YkSv$|;GRaT$OESs2mz(5^>#taZ|cNeKyIy0>ud zcp=Tifz<`EnGhrg%QSMbHWXLXIg7&%Zb9$r#V06|n<==8kL}*(ui^>b?WwPC``A1@ zMqt?h102eoJDY#m!N>##H!V>XK=ZlvYbDx6AXFaQON|o@h8ivJO;d~Yl4YZ@-s{sJ z9sD?Z*`RjZm#1HWB~T17{51#Sc~Uw^+VEo=Gw({I8L~>1;|xylH?D|14x8dpFj2`K zuRGXrPG4InVT)G!GVjRJ3##KQQlAG@N3s+e`wMT&Fn;oF^{B4yl@}QtQZEy$7ccDp z+!b#y{z6zgeK~=pN?dpMg~dgUc*gXL^lZ9`vg*U+Vr22nR8A8{%KhiW9vcXY|JL%q z6S6I{p(VNR_~a>7iqu62%PEM`uD2 zm+B3oO?llJPx1(_n2c1OI82CDuld;0UGZK$q-fpZW$BYei@rUptTV*sgs*I~Ct_sa zkaTeQ5SQ^w2`ScBpZ7|=5JM#y*aPYjlC_y3fN!|J9Ly*~9AJ%O^ICrbdOfn|bo4hr$RwzhSN2Ys1NoEZ2L&SOKB(QM@U=fxuTGAbZo z@4kIAaNOhYc<*_<>42ElJF9XcBrCsIo&`mmQQw|>5d}WCaB$_PPoIOvz})CQK8f++ zpU1UE_aZ<3{!1T@O2fmQh=Tg`uzLj#8Q*RK2-TAcOA#*?RwO`4iHYH^Tbqn{K{VMM zXJ7Ncu7rawY|A(@9h8lf-Fh@MM2{?6|7>*n5$96xcVT0(+u3}@`P>AXr_t2Mix+}- zInKUKD>YBtl3&jN;Bw~MU4duUo@uM3^=Uor5xdLP_x7`$Tg`*fvqOgL`+MKp{j3?^ zpjAN{W9FwJV_SHmfYN}!vziqB+Nz=~0AwA{tAjx`Z#u}@dM8CLoxD*cXT z_D%Mz&+pliY#Fn$UKxKlq%&3N{c>GUhX(tLb+hAWg#HxMzqZzsdqgMB@VOJGao~kO ziL@tT{E7ZH&)+5{>IZ*BXKS!}T+Z>Qh5zhUJB(IY9PZ*ihnnF4_e=Vt*qqh^=3IX^ zce;9&(Dq&H#ckA(P$xX>y^jh=RmZ7v@DQPQoCs}ttxxvFx|%tKr<&u2pZ}P3P$1B5I&|SZHG;sJWT%t&M0arW+X%~NM5Q%Z-pN-YCPm3pT6ibtt%a>$Xl$~|QTZDf73rfN-lE~_L_eN6Mw zo`2MJszo_f_SrWEE=88WoEKbfU+;b#^*+3zJbyHEv_LCo|`yc-yN*w%L6FuuY33|qg2q8q8pHs*Wt*ji0g;giSeK1!cr$!b=*T5$tA~YU;TEZ^--b2@_L5Inc7>!zc5ghCFs-c?GJfVnm&F!p1eE&tT4J*A%S;|NJ>;%)l%*9T&G|idY!!U zkgqsC9;3rBj!JPfA|!;GimC}U9e{HLaxm^M}i5J zA;FDVR&mKQCB_pcgb@s;f@e@VEi9-!&w_GZ08@>ysO~>ilkyS218Z!&DGaGoU1<=W zPs8xtDRbeYb*h@8NkTI4LR;6nCZAi9KlRtmnw(^{%duwb9Dm4=!03yB@Gzgq=IKa9 zZDErDL@KAo`t%9kB(`cH$<`Xnm!b~SUt>DXEzEb9C}i1~!$wD@t24<$XTf@vsFmPc zu}49|ke7~=zQ>GL?`o7VQ)Ph6`x2M6Hg`gK!%;q+$Q()MgW)T4tu8OTwvDHZ^nEF~ z>@iG^$s2Ss0?v+nPl{}~9eW;VhHeoyIcL$cacjPfuN9uhK85QqjqDF@F=Tjc@2JN5 z{b#c;%^u6wx%uecOcnXpL{cMbp0p^EQS>_SIjV|lLaNP}l^?lKJUW;|Yt$2(1yETY(*4&x7b^h**_*lW*^0FaPf)+`5mWb->|sryf}D2^nJ@ z3VyDijv}u1E2`;e0G>6#{}W|^Z3X4g>%+Sogfkj6j^&N{cFu#D7@ZNm@<7zn@`4&B%$#>OxTyO`?i6Z}eQ6$I0) z^XOHiK2qujC5M2b7TBt9P=7N#mF9( z!=P#nkuTS@vjIF< z;md+Vv{(BGq069rD_1lgO3S=Hl>4Af#*qJ$5;GhTOj*3k3yJsG3M z!kW>*7k(avAd4uG6rW?Z&XvK%nhSPzZc7wNQM=rKOs&v}YMt^O$xwP<7-_hMRE%YK zJ7l{aT^o|)($(imW(OpHDYVSQ2G-6WeSYb}yW3B5#q_T)h1=^cjPW_7wmAt7lhfW% zo&9YXFtxbIuR9@1)9*SfGvW0bUKxc6z0CV0si~x1oP&|8iUm-+?4jyn5y<-~r3k<6~o{I+DhyuUd|WKrs&P3q5zA8{K9tNl*mgiWe0Ib<`?IgJQf89a(1+ zgn^AVt7mC8A>sb8ACamSj<6ioCu(YIi*PZ33@~Gu;%+?-EP!KLCC=^WBG;hMA^QRB z7z_`*F@|#IioQJD}_7F}+#^gBa&F;9HMYHmJRQgF7D{EjNU#kvX z-tP$Bz&AG0FG8OaZXCLp{x;*=>ykE+`A(ZuYi7q##*>QaZ<|I>0l-`SeP4NII%HHR z!@zxdM4UY!_)rcv|Cf>el-Zk%pZX3Dldt)ViY`7PwxK4>nSZ}mr~bWUYt>cs+qqgIfIrzPPe@7RT(Kz$Op&p*oe;`{d7KIZcNe$kB`i@1kN z&Vdv`S_nS1S0acsOmW6Nap7w6=6==s=J}SVhnXY!A zJeGGAUyl-YImgK<8?nP2T_s1hoVWZYG&^vZ*Jz4Vj78#>7rOH72jmwOb&8AY-K~o4 zqN1XN++H}*xr3r^Sqz6f3+3#km-H&7k7i;Ui1MFj}hz~ZLpX?V!>itc~qjVF6(r_zQu?O;Z5Ev4XSQR8;($SmT_monRNnZ#N3LG0G zdmBS)kdxYsJ|tFFRszj3a$}%aGSbpK2OTzFV!T4qP8k`2pFoPAVDn9Z)z+7FzyQ(<@2HN?ME&wF=?Q&ksk?`h7_?Um z#&GLaY>m-ViY%10IdceRoYd%-;iNVV7mC>DA$Q@GBH8r!hKlJly7BmS*%OWQ(=%fn zo>rL}lMk6g?^xw_h;LE1=kmOGO!B#fMqECR5(hqG1WpgdkGws2)CAQX>UtMT!Y^)9_&GqFwH0uCAlqS(WnK-l1 zzmGF(3|*gKT5P$#?EAyQ4uG6l7ZkE>ezkGx4r+F2`PMZ|kZobD>tR?FASy~SvO~ho zxi%l)x4<8eudD90%n=;_f8x%|5jk6;GO%7UmZxal5S@J6C_*h%B_9JpZ?9?-3PQ{qg@6ks(jaH1>$IYZa z9gv;lYaNs&v)&leXAjPhkH7I!)u_cjrLD;**V6UP_2J zKFmhL>sLxQtsG=1qjJ3}bo>@kHL(rT zNT)r-YP<1B1nhEcs@@b54=6wgX{YcH9#QfNWP1-CVv{>uke5dfeFuFJ4ty{0uNT`6@2 z?77tbEZegsphf6^; zwJHoo>(?I4Ff$g>*B2q4)n9GP*oY3~Vo;F}r!{_dtstdurqV$8k!nhpnhrzj$Ce_C z$Wm(4)zfRQ^F&JgP4^yZIE($(j1#)hR!(!1lL>a)j8|;8+H2rm%?# z`DmMPPhuVZiEPg2d4u~Q56BeS)4jB=^9u;949T>XMRz??ztEoCpp8vVaOUnp@0}|W zP)^-*+9}MM$V+R#4T-8<$24blF>0|v-Z-@dkYJI&YZgSuVEx;`o*;s8$~IXArvQz> zGo8oj^Wd5y#+?A-32CnZ)KLnONlUc=%MS%xxoMVeD z!$~I}zUVfZ*`32mdL-Ibj;ln+lKX``V9LTm;h_veFwa9n1~Uh{Z=M;PYY>W=APPQ} zM=AO0?sH3{63vBRI`*B5zK=e3wzKc+FwlQ*e#AzrMSJkf!ItIzoPh$a9pR#BZFmU8 zxwK2w-p}+A>uV@)Cpc7U)X&&jTuNjXIpR2`A{=??FoDBG+Bf0r5!TPc^+v^ZX04VR zV=MKh)Gs_%dTYi->(~?GP20OOZBDAnUr*5D?(u$^du0Z>+KoLtba2GJv*(+bJ95OM zwfnvT3=Ykk^`v5XxHR~a!z&$4LNp|)#)l6VgG95C`~zxI%-R+GV!`N>qx(c2A~azL zQ7o8RgWQhY_Qs7Hkff~P2>8;Og#!aQ-5eAYs;plq^@kEO9HNsU)PO&QAn7oexGpIf z4j39v>Vv{voQC@$y@KM2aC9~dJN>|cHtatPP9t31wY`EQr*ari6XL#bLEXZ#D<=_> z4Dj?rmXRob7JqjQASKLsnnHCOtPYd`{9Noo;o(kTOpt6weBo?tf{{0~g%AQm>^r4Cx z8aP66CB3}^R?d2#^dV)yoSZFdHg}glb+mcx&wAk|nq$vq=@$LoQ6cRhB|mQE=(Qqny6{rU2F+r9RL zgf^>Lvty@sa@g9X8w~$`*_ix7?rv7}H$Y=|x0vdUGPoB_o6TtjXcflh)HBC?xMBlk zB4AIJP$k;d0%=P9s{uk+#l@W+9m6J78#L-w@(p*A23W$knb~s+7MF{QIH9|7J|Qqe`(Ks` zzP>U@ZlK`{*&+)0|7e@j+&X)5|3xeiA<}qdSjTT6JQ#pNrM^BB-@e+9fxqVDY)wl` z4sICwUKHKQ&(Qe-Dk+rvS{vE?&h$qZfG8RHSYknm+Q(DC2 zgzt22zWvBzSIkU&pjd%G8OfRN<~&9fd267OC3{s9qWS{c!Q1Y>h_&GeSHjj)F947%N^~Rn;$@; z;XhH_c-T{3P7(tG3R86_$8gVg5U<{O4ikOPZ5CxN15u`Y0HqW2>LJjOdg}YMlrHV< z>x}R1pQ^rH6`5(%t&7hd67FN2SfDo6c$0a#u=%7#Z|Q-h#)X*d=-%0|wPL6BFw50W zFDi}b%J&p<+M@QyPV&Ut^r>_`pWywWklJyrtiOoH=|=inHq|c8=i{=(3tWp4r)6Ar zh0>v@t7FX%W4Otyhrhe{^q5l%0KgamH2ui}ucM;Q=qql&fUPrfU=OZn5TTi@G%>Whk~zOxDJ8 z%S~#l<2h5ahr&POH$RYwPb`6f2r{q(RC+F7gXa9!g6U7jomqXT&Jb~(p*0}%Pa-G} ziwI0gPEEY`TPMTNCro+LAUlgjF{E(NqA0mTh_rS4!TQ&(2TtmzCZZq_8X6@%O2^yi z%4yf@z31h16#^6&42*=n=Yi}`Nc^DI9h2rN(c@MhC5a=mv`_ZVD6*)?j@T`KQgM2l z@yt6^SGBQ<9#ar}TX$?|5RDxSBgwxl7~SVe=XPj6?2yux+d6P}=6AX1?W~xPZUKt) z2pK`Af{|Ne@(unWv>yDCH|TOsmJ5;|qnDZEezflCoWVA1NFMy5+!m=tN@#jhJ2n za~)5P7ZoABEwzVbwQ|4ydykb7lPS(rbA82*x7O7ryZ;%yG81D?v4!98?LO7gL%!J7 zmb`QrlueNiiIE-cS^n>t>#Gy&ZsWY;2nUjv8q z!psBDK;9Lg5zWDaEWVFn;(?hF&_G(GmU^%ppZes@SgEUd{ak5ncdr;(MH#ha4)+Gn z_kjh%cR(6}TdoiSwqGuNakueBv;Tb0r-lN~m-3GuB12ja>tH2ZvatP%Q&eY>V2Uh@ zLA%!I-M-vA<22cW?$bpSA@37`u1YE3v^7 zHH&Um!&S9AqZ@wn&>O#-c;=qGu3@3mqOtsxor~G?>zT27MVA*f1@4ahxr6bhhU2UD z3bHgces6cEAn%p=op~mxfwk9HYhJzaa(d~hrgo`xB2(bLS*;vLmxYX$uP^MCew<@) z<5tHiS9#9-NIKDQR$a6dhY;HiYH~)|mqN>!L=zbr@5GJPVqh*RQjFl*FlD9`YG$0T zbtGl&JO+43$J$radD`khdCkgNHDAbg{)?&>oO>!%ieoveXGF9sHUroL*9a-7!zBjAQA$>H;DplW8E#twCLTt zVCcguD-%(1udlB|sWCe4v&Tgp}VfgtPRCl~%n_9WxsPqj%IDu&?!5qkSJ4_}FIzfh=p z*DjsI^YOEygABF<)-FU{*@^aOVH1{bW%iRp%r~Y&c1XR!ms(w2edd~N`fGBMt8t*= z?bplJiWhDx3_E17KVfY^I7-ZB#+SyT1_x6ry1o>jAgH_vEIfcC5*d@L4x^Q_jrATQ zUI;8;ma30oFhhj28%EH|J6JoN7bX0xEbiwVjKMS<1tKne1p!$n2`;bP;$ zLDZIe$jL$RU%eXh(s^L6{BZKKo5FW5s~7}S2kax9`9cIDsrpX;Aj35SagFOsw2U*F zv@9q1QZIJ$)8+hpl~r|B`?O={452)FjB-MYE9seNJEp^pO-{yaunz*PpP!myYhq`k z5|b3N#)`lt6a`LH-sysT9V|BD+;C%K*xC54tBOy@u|QDzR$3Dvo48f+h`Kt2L=Wk$ zpz#D*W-Aa>q+ihb-vZtOEmS&qZA6s5-d+$!8u@17n4Iah>M(1IahhO?;fWXBS_vc> zQqTI@nTs_XSBfQ$tGlWx;wIuX4Lv&U3nqoN-#i2A()Y-P78nU4(?ap>3sZflX=Ph*FVCbmQ8hpCO(Ta3;e`YSjqMOk;-9o>R$Hxrotyr~$OH70Q3-tv>+$%orX zDFL_MXQ%~9Q$Qg@fglYX&0`?jP-+fgIL*q^(o%5n0jPIpuT@l3K;9N*9;zKEiJJsDBk&EJd;yrKa@dzN5a!OFkjuNaLrewI{d(lNaX=f+ zZl!6ln?CUT+YWWl8-)nvk@IJuo`sa8x3$$47YU4_1U@c6g>d}I%QqpY&N#8hH#?&8 zL7qN|0}$xhg~aepQ)d4*cztJtB9n%u05=M7H>Jo@EY=v(@44yefGUY3jAP{qzAh)X zfd_~FfigT*j5q`U)hoQ?UNS}8-&^GeoeM+?zcEuzM5Gi;1&@Cb-^0P70VAC9^6Gz` z@)gGWDqIsD zEQZ-*wRiOQ!=A1RO(9(>g#k<~EaF$MVseYOrza`9z(Ir?{-uOfAi5zzdehYJW5ItK zOoc8VM|D52{|G%jhiaD1K-GLNWvTPLiKF8Zq;s(FQ$d>+kmX^!K``jZ_DIGS7-xeF zAE%d)3p`7x8Lzmyiot1dbIjIFLi7JR$2YzxTbLMMRfxItaEIKona#@`hj%?9=_Amo zyI8U3ZyoTD{hg-o=ohA7uIhKxpZ_hK4 zLl;)ie75T-?^N`y%ZcG_CK@?*v`?7s8PfjuROTx~bt`@saH{KI?xXqpK0^8t1!m~&&i2&yDe=foSXKChcT{b9azgBJl6z*FOUJ2S zr0zJpzNg;kduyOrrt-7jH8mJRiga!iSVo_BkRWT$b79~wAZPBQ|NEOl+j@IB?8d)c zBeVYbH7=#6K&nXas-Jw$SNaRN8#9Ts=koL2blrl`6Zz-$S=+ub0zYW2>R7;ky|!nZ z>(|5q3NcAOv%Xx}T4r5mg73XOT=I+C|Nj0EzULN!;;ELCmJ&|}J7mVBimp{wzDf|B z%J^DjtUZ=buaRrg)0V9~kaU_eN|64jJ3-b?N#V8_!jt48y3R>2=F7>g7@cmF{r$(U zU&@`y_f^uV#V}$$CHHwiFqKr=@aMR-&Mch;)8_7U75bPJU)NE7j$cP{9^&=A#)kR# zZQP_p8+u7*F-hgCeWiI$19YJ_gc6hXEUiS1!Wjz(2mM6i-}y?L8jn3J_m7IQ+tB$^ z|M{@$N6yM`WvVU03R~jzc0Mlg;F?-5`7n_9IzsTz+i&t`ts43JNt@)U|Bcq0HYxub zHju0T|34(%sQ(8yL_NjnE!xgAhQ|Ni;Y~vK|LrA)dQ&;=d2keuX+%T;Qf$&o{@Caj zdxL*7ivOF>`LOZ!?(k-rBOV(cSnprlyZ6$iJ)7em?|3RzGWBuGfvat=<}*|^-GrVg zo2G*4atG?=n!eB^rTobx#QFH~_V!)24Q2jk7{`}ql8Gp2Q z;veFFT7dt1%(fDGD=>HUD?% zZrZeT*E#xO;CRpSR!Z`g@d8vfkPhKxS^DeE-G0lJzBB(Vr+Xf6JI}EhcfLF8D}gqh zIWV2zpETBb;fRbf6peabsD>}m6ac@leB-x08!}V<>uNozq(2q1~?~bQrX^)R(CJieh_4_u^+-V zEcErkB9S0lQI~~NFr5???GM}7!!`djS%-9`_d1^>=(w4lAlCP8d$yCY-?iim*~V3` zQsG?Xx`Plk2-^<%h{ZLTGXnw9(a|AKv>E5$Dl0=d?(7yZTu# z2ki)oEJ4kF$ocxwJkn>ekNEJ|+M#mrA769J%F6b>x(Ur3+GYQV=H%i+KFo`Y)<^CO zqS#J=pFdRQa5stvB>yHB77atlFF__A8t%W8pei)~=jcA0W zF0oIHoSYo)iTd2?Jp2X3bX9vzNtkFqvJ8dPQTSt}aj&^JKi;x6z&zJH zFLM-)<(^d1bP+!oot^jKb(a z8_D-$(@oxNbNLyDYA6?h;{rplFJaU`D?smL*@ljS0;zit^+o6W(1-NOo}M0}C0bF_ zD2}ZW2mXGMCfn}VOIzBvk&t6F+>l0yLp~2+i*Nm4sfiwUc;5WRLU164hocNdC$*=y zcjph4`x+7@q)*=@KHGh+- zOX&7=pc8-&dMR1a)^_$rym_=-QJ3-D)GhB=QhE-wDj<$`{=X8_mfCm zkqn0|B_IQhwNI#*y&ryghw&Skf=OJ+O0aC9wiX})lzD6Ny9traLPy#L~@E^flb5B@z|zS8xsJbI)3=s|VT z(?74~^?Z0fh;FTI;{p#KJb+-kEi~%kbH9Jsync`8r(bb$vf=gXUjPaj zJ>_6y!w0WG@Y%+)$src7!0hZF!6*8n@O3wqhhqTxX}q&yEDQ7X-QD*Hm2^%xR&YGe z#?pWvRu$QThQB*os*(UY6H)TwUceQanUxiiz%>MFpj^b~XCUPIeW>Lq2TVGe@IEj2%|V=%^J|3U*$}sO7gyF3JD9NnWGcyAHLTuS6r~5&`nJx1`4FM;|Luc z$Bf;dSX8{7DmcRh>lnMw&8$0@ePbN-IG!t&FuNwW~}H37mS0ZQ{7ni&y?BaNVP5Erk4=mCGHCXJ~Sz?h(W)6me^SYN9=Dkb*d z;X@v7Zrsfp)s>(cJ>WDDSpa&o#K`FHtO}{T0s_tu(O{LGMhJy0)e!75EYE%EI*YEkWj>8i>d6u0RK6hM@_4z6QfQ7UHICB|zUxivBS% zjpy+G+Srx#L6-KKBjB3*&reU#g@WgUFJ@qRj-S*I6UnVF1!K>f z+4c4HzwQIOhWQJ%pgJU^vvYGm*B5}ps+sWe@g?>gJD*@@fJTR|T2m=ez$=39L47kz zzW~fQZCru$rKd*_kQUI(2WO&!g7ynO!cEi8HEKpv*s}92biD(>`chv{t*9<(^{N_) zk5Th+;E_e=+=J{Ss?hfjqic9}#A);9T-Jlb_}G{W#+0|0N7zfG^T9y$)_Vg}Q_bv` zR;ReuC348vquEm`s}A0w35BP{sAV|zRzgAoi0N`?=nqMz8Hgn1?Qs=^q!1jKfZNb_ z{DfWs=L<{=a&vj}qKPIUtgU8>@+G0;&w)obczYcZ_M?s>HCRKVoomwml%Ah%vsRu- zNMa&^^d2T{Y%gA;DFH)6pzS{AvS3zjV*mN)QbtQ>=OP;Ku_N{8l}UXf0=EndFo2D; zVbnD=W(qzcepgpj&7Ax(Nx_%+t$Xk^u*K`LvJ=hmJERZKW#xKotb=5Qt3j~t+c4Wd zg~ychMfsVKSy*Vi`2`W58z$Zn?<8DA@C5a+d;tsTEM_E~{%qQsR1ef|J}>p>Y4nVm zn_ddP?f?Pa?pp`KuP@9tio#Rl#+Nd~ka9eZ7aa5XQzL{rzKaZO#k}5696~g}HJS+>pDInj&QS zA^tO}@}V^;gI~t&WbtCWMOt*WCbtOkR)$_0e+ec4)EVDsl~;2$hSA3Pv7&-+&=|=F zmb%GU^^Mz{{L_dbrnUR@xx1igL2b7bE-+YgyKVjTAyz*EmY~cy5s5W}phHGd>;`tN z@%+W47wTG8R#uQ>w7c7*`9F{E`c6iA0XzBKGf$J1zuh)Bcf%PO!QF$rW+UF^=ARIh zvU@A@m=0p{QUu?&ZQJZVc6EhMn(D^M!wd*h2)S8UhQK55yFJ;)G9KbjfbIW9SiRB&)08G1E{cn~VzL*C*Vbu=)o9N1Dgw0 zcUc5IOzgovT&iFWk%H9;#e(%m&z;29cM7S+_%l1ZIao5Kr>A$hN=r+3>trXDsc?i; zR#t+zMD9Q+%fWcb(*o4wmB?Sah~SpVR6cr3A$yZ%MW0l;=m!i~Ju2vcv2>)iN!Q1- z(3xeVcIHPsCxVOV;BB=w(|H6Au9|k~e#9#J!k8wHOyA9l7RfVJEtsm+Yc;BEN!ktj$2r+X>%l$($b#RL$m^EP#?z-yvA&wHWg8mxhUZXRM0j8n0#t1OxHmxi0>S{;5s|oT zdrt9q01n&E1E2QV7Cx!|=N*ASKq10$^5j4n3a7pteTvnT%P)x-41Pqw?(sQ?q+ls# z!P_W#c$!;pofSKJ@>oz!T6#L1rkOr(W!hH*{g@^m7TNPKUbfGcrn8f!*cN@}FK`_n{TttRQ*^HAal!NG(e#4F9?{Cn&mY59GR z*%oivd6tVS8&%bet(vGGhPMBR5k-4&6^9o>46@yvSaFmudU{OJ2YrI}@7-ITb~n$g zYX;wbg}(n{G0u|hTenWdui%$<9XfN*?Gy*cXh&wGSllts4DI(XIwW4{qNnlqe%Ach}D#&*b0=lXZzgpctkuf5P#-pcX5MlBpTd`Zkv95NS6^Fr>FV`2|eMRAg zB6TWmhj^+IzKZ}evzNOo(tDK*wenKbttW+((UNe}S{P24ni&|?%LN+U2e zX1Ye6b6B{8@keokl5R~P6)Hjjje9m$UzJ`lae*Y4tT43>8ZDq*1N?iE+4NXBIp+r7y;1Y(z zmDspJYY}{7I>y-N8!jpBQ0HrUbk1txf;@VY>b{h zsN#@$+C3MGqjHjcB4u8RqjpNB4aQWHqoYzFp))boA}(K4Dj+mc1*9T+Yc~rB8#NtU zpBG06!Z8ZQ?TM@tx9_+72n46-40 z1Y``ShDo9Yh_y}L(*6mC8%8PY#!3hXs{~8j5bSUMG(nW#U^EFG+17|tcHIdSg2~e|WY1zq$JkT{^1|rzu9pjjg z_p{nIB~>}Q`ve!+_1TJpd&OXz6185nJxL8k(m+2nb`2cg_KD@ZeGBrtT7+DqddvWs zxT|6Z?r+XxCPpSsP7Cyw{l0@UMOa9vEz1xG2(d5>*Qr~lkoWLLJx|8QOXQ2E zw62oDOoMQzci$6FuL8TzL6uE)e?rh}8-f&F0Fx)l^8ySou>d@Dyksa9NWR_c!EZ!p z=K?F)Luyg*kRK0(G|W}>C={tgb~JjR)%sORbVm5+;;U9lsL;P05A^g$8bh0o{hb zzTdog^H|vzfM(mqe0+T|d`B;n2x32NA$yzLfTusIn75^0mg1xR{XdL;+I{4_705|D zQfI|b=q-w=G1ry3)MLA+D5qRaexwS|kb7Yi_Uft6e8^2uV9^UXlE!Z18TgqpH)qQ-qwL@As#h77Bae5k3hsU=}9ub^OL%q+;~vh|f`=BF8` z_CCyhSu^s&2hvA%)kjEeaY&;)!h2qDo?~MWHk=Dl8S_s}WR8(l8sh=(!q3I!$5)sr zb5Hq6S??!#j*ztFLCA;Ec>d+16I#}hyS%q>nvv$esOw!x=9KXP>isH@>liRB?93aD z^ZbFpXRx}v$jD+_e}5Qde)b-Hjn>w0ZYIUf*29%c>h%Zk+A%^-uWSvU|C~K2BBi6E zlGI&U4mlZA{;@pI7Y6O2Mu3ia6`0XFkZT_yJkB60b7XF zrA|vFym_oa)Lybj*W;EVbWt+7${bYY6AqX$z1fO>7w^%3NIsFfSt{tRVgij6^H_Zl z0<18CodBr;Y9Sl$j@xXvYWtjpU&ARjk~s)o-S=-I1?}QS#t^@s_;tjSs=nHr>SMtU z!?vSNVxQ5nBto3JyiV$H0w7c*7Ps^_eVxYtrB|KT($+@DKpX0Pl5lOq#q93o@05JH zyMy9{rE_*u9XTmQ6_!+6S7$$=GLLF6jmKWP3QeHuFbjAVSf|Gg%nvOU(9WT6DH>AN zWOUU{ab-NzE+!fHe72Mi6Cho83DY>(nGws($?0Gd<0zTl(dt0rS3{^izz- zj@>gSVj)9@G=f&#r8Z7TX!nbiu8f|{tKXieV2t368pZ)0mrYIb>nFR*2618NImNEq zMH9fZu_)ik%e2Szh?L3W^3?5-67|XAyDn9jOBLv8sjGLrzia7Ea|pOKS{TtcavYV2 zeTCt>ToYah-3g*ITQbj_n%-}|$IQHez5nzkKT5ln6}uur4Oe1z#cfX^l}Uu8>2mo; z9@i3AY`pgEGD)DGcB1f5GA*((?G_^~)_a{tO{D1Bu{uAkeC)~5#~|`E(JyNB&`YI( zfm@n^3~$4z6f`u_RzBRZwA>hJKCvQnd39mmF6&r_!&@6a*h^5gD`Zj`0#h|Nml;ks zZ>@Ei{<+PCxL^Gm$=ZNlsJq})FXo@+1xDWRjLwfxl64F#BuG|jZ<(JaB*}@+3tj>7!na7bvU;}Qlp*gl3Nv)b$SQ+ zV0uHU@9GG>>Eh`Rs#fuD?vU0T_sFeg%cJRcAJzR_(uhKZe#gGW3AMh4S$Y;^*&jKt z=S7nc$Eh``Kg0zw{TQ3NA>NQ5Eyd>sKcmC14C8uLY^9onY|$EOV%kJDCDW6jkP3&x z(T8uso>wUKOalNKNzA_Z4M}oW)qw*C;9vOmoM}2D@g>QC@z&*+pV3BwQt_3Bd2M<5 z{r>OWW{lKGH6H}#PT#~){+OXACvut$K#Qd86-uT$qdwcw0XM7%VaDRV)sJF<) z!{RPUir8q}xN(*gir$@9u|0G4?2WwlMcv<9w|kI>p$~gn*CZ+@=E@q@Q45Y-^BA1iff#6N`Q3P)EY*OLE#7MdIctD0GbH2M*WlgdM z({+i>L(?U@TVlgVftGge^$5RTyI_UBHK|Av-2-F4GkS$cyuRrsrr6^M?#R@GO#yr$ zncg*Rr#x!br16(D%;x6p&*FjK(K6bDyRL;_&&OR|n1<_~Yk}65?YpSnLhEyVeE>IZ z8wG?=ZEY$3*}1Riwx<~nwswDiU)+{&oWN0P0zH$t(&dyg;*2zwsD;G@GHm0DLBRae z6jRpxQfDGA^jF6;U}U2jk0uY#TR>`&dATJ{vj&jLX$JbqK*$XQyJNlI6myuO@ti4X zxf9?w;hOtwJ@v_xox0VASS1L5KYF;I^`2{A3FG_GDvr{7NrXT3ZogaT2HW|Ns)SHI zB6u&r&uBpbH8gXgZFp#CpZ4tkWx3)#sypv!V?OhkMF`dH+qZ3y_N^Z{yoX^| zhy)YLRN@94jAl;w{9U&_#rc;c>CUFQv8vncPU~A3tAsIf?Ohf=AO@w4*kPy638N?B zl2%o7b3jK72eKFrj#qxR!;LY+s^`(M0DGB*=9U&zpsxpZKnx<3FaFI!?FOk!M8!p+&QUuC!| zhmA{1OHq6s-5AFsSWaL|={7iz9^oO%ByaB>9?C7doyYxibud%cR?K1%nBDMUA(il5s*;{jSIVCcVHFP6f#|eZ?5DjLJ4t-gK zB-6FE5(Nkx7H$Hp#U36-J^|Y|RJ3{?f*?1C^31z(yeL1ftgbSMy1Sw|3bkA>ctw1t zud3+FG5bzdnveZzVs3eR*ME33sGUCQARa75pcEw@ zQw!`DLK%$h3ykra$N}^M66S_{&*S-44OTnpDirW{lEJ`j!%E|Q106KOd8>Q3zuKx#M*tBW$6j1^?^7xOpC0m+i&;Lkx)zBexHSeaeV)NvtuzFTmT{s zEXCQ>umhaIA^qe(CMsH%lJeO1<&TL8_-Dtw1Y5Qv%go+ObPvK7rSh zk~paeWE?9uu515<1Y&rz+(n+%_;cX9c@}Ejs|fpnFZC zf^wS^-r^TXJJ6L%p}Qz4RRwtqzctgJ<>Q;5o{pm}-4ruuM|%FT-dFwpd;Vba=3qp? z$ER$r{0R^+RIb>!qxoGLn7*=(u3uAuV%!Lf3+-??X7e{ItT5G7G$key0P*Da{6M}UQW+b%@dHgO_r`^4e^P(W0*^SjO8}1AXr4qUXu$^ zNX5u=Yd~zGJZx+d<0;ul`eM%9df@J@0JtIjW&HX{kK#5#cGekA1JKuBO-?P4x?(4;Y~}>Ks5& z@Si?B*WYdj>WSf|07P`;FH2Dc007!eM)rMpgg+DN>9nL;YpFzq%i?kJY$VY5tVf*G z^_K@xc+t~m_N?U117|i$d9VmY!cOPmHb%LF761D#1Zac4Q#GsYAyWD{oe_b3FNm$- zK>%;xN|UX{NeY4J2KLGS3;twBK;t4w*7bg}V9w{dmjZiGO-A08!|hn9W5eS&@Ls$l z4p}-S5gr02eMNj@KBSoe(C@1iJHF|bxPn{rTP0vP?4uFB=koEE=@^3a)M$B&DhIm+APwwtjMyc94*m}aCqjIMwVLoWaM6#7F=#ltW=|G#1rHe8 z6S>am^Azw%gWyoFblNoQiuFM$06a16$|1mwAE9n&Y;0_FvmT#?5*2KR&oV0Z7k#qaxSc2?-e}%wHnKP7? znOWF%DUhxB{d*UbMC23{Tw3p9mAi2=qWf;&lR>~>8uV&lXtT5h1wPDy9VS)o&fDDD zfhp0`)1xSoBx8r30cxw#bP{<{TFS!0g3Z~Qukac}`%t(8lue;iYWafU+JL(8 zRPYOMc`9_A{)rPHPvfCG8qtfeP>?49<#a|ru5@VU|F-={&OSRVU}sd~ys=RlgK`3R zVfjBeE;4vLac;_C1jX=1%LmLi$6x*)Kt$MD4!f5+1o<3|QE;_q*B@X011zQa?5}oN zdl-1^7z-P^{-+utxJpDEYyE|^2IuT_-X&a^q+mhfi&N?(mqohUJkT6N@u2?YMic8p zQ0Qi6r$l|;W8eeu`(1CC|GcfnS=l3#dGsSBneuw{`fC3Mr{=;&og7Ts0OKJ~!%hVH zhDYbxGY)LBV)y(yU^uJcJFxC+1l&1TUml#uag^9Ehzw2)M zBlvX8G(+q{KaQD}rJ^FKi3dEa(rYy*r)3x_-)Sn(fwfi`K*tAu0K!mdS$-=ny!i$s zkS)o>q-PiDV(+OojR`f8W@-@y^PnrR-S9yplnap8 z(`ok8B#VSiH-V-vXWRb%`UYuG>#rbIxsLHF{QS@ZvA8gN8C(#yQwNekNMu^OyH@~T z;C5cPJE4V0=olja*sLV(WX{3EoQUVkjzS}rKz)acUt0g2b<;7?Hsj!L{sDg=| zPtX>Oqi-w|A9Uv3U-3v$R>1=*F$^xiYt;E9>Do5wFdF?gDGdK6?iKsD)rIt*4pBe& zS8$Ghxv501$D(BfuIc~ z3LeX&)%eb^Zp{l%y*6Z#?b6rU+h29vc?)C_uJv<$y*=QkhWz#?IO#jNXt?b~)zsCWsDDER&DjrV_Oh8Auqi-0Xh$-B972)O zM+0L!I7UNrcfxGb z=oIdX3C0)wdsiH+td4mWFAqgVgz|oLBALv*J5a?LGk&0{j-nMW!=dXSRwI4xDx zPoY#;?FJZ8ZfZ($KEn)yuWXvCJ3#X5mT7%%QXf01ptO`+v43K0D5*8&39I}v@I!!n!TlN zk+L|7M~ed?pujt7Av2acysb)6wK7drwEo!T?aE-tE&|*j_Y&g>Ax*iO?*aGz`WHBB zvz~n4jdQ%b!Lm`J9^YaQ@7(lg;P>zAx);d4rKl<^&yO?@pc?Ue`jn)zr8lSlu#v`| z`A^#;9Fd6nI~o5McW)V0<^Hydx|T~tF;E&46qS}1Bm_aayA?qi1wo`0Q9(pdY3WXB zkTy|Tx+GLOm6YDshZ7jjMdJQbi4#X$|!TOY=w|kpoTxzO0QlD^wL4mq$+r#hE z(+X#ZK)hnTzqehH$Gxuyr>6}A4uh>j_}JPYLJHOrfh$+))j+v0=Z7m-@#iHhDRCe1 zxKxWHd&$XPpsFA=gE;blz_PNlcjVB5o4Qf47=jK69UnP4Igo&VNVWC!aDPRS*#jNG zJR?X(&hqdOY9oyFLF`HIYhO4RaZcmhJ`8aWE+^2PTX=geD^kGCP~l+~R6~D1v}NJ zf$c-<{wj{|xUdth0e((S+|uV^2Zp5TpE@7WKB!S~PkRSK3fwO02)@6!h>iXf3yYuV zL1V=iKwYN0x%v1)$Xf6&abmv=3uD#J8AN&PK%1sMF*(_rZ6x}KOs_}H7@=6K&TNB^ zh35@zC~5>`?r1A3zv1|T!T~XCOMLO@S-{v%k&uZ)@PMgPzlUmG;O@_ORRsbCCqGUl zb|xn1z62b`0w=h@Tx$TnYgwGn}1EVpDEs?N@<}3KZYy(2xT}w&=#h3==VS zSIQ+1Y_FmypZS+7Fp_!)LSZQuLn&y&gcUPeKL50$g3yBQa0)~>kLp81Qxhct5g-XV zO!w$thY!ERF8|VT8?og0){PtUCa3^z;&{UNmjMugSh2h@W_5Ua1Er2~KiL#$u&oLO zUOrK0Mn`v!mzVAA+0Rh$BK;i55H2e`d?F3Pqb8J!nilIDH7?F&91~HZo}2iQJrCXi z%;@a}cOMaK;MlK_rI>_A1}YVp8BCaw5fQb;dWp0rGm<7jGq=Y5z9u(Id>RNZwb1V2 zs8!%s;2h@Zv;7)@qbGsL^o!uBX=>U6vC3m&tQ&0M>~#tgR3KUXjKUX!aKh6Gc))=( zVhVRAM9FBkuI^*;w4ge})vT+n{p6T%DeRV@MWp5AE?{h#K0EZ(H{e4yH66wfC-p5| zH-!c$UBSJ+OihbjYy8+7_n zQBjZ;AwMAP*8Yk)B7xHV{CQLSb0i{q5Mn^1GJ`EoI0(86O|`YVaL8GV z)MZ~qG3oWOVB-@ulPBn1)$y&geqw?jPTgN?gmnOf1vw#AC5C4a6?z>t1qI&ePs!f9 zckiNICKD$T6@UUxRlkdB`b=X7w zj(lfhWhIJfu5kGr4mc#3+1Myq%K=t{coktfB+hPF4kGBv=55AJ2h54GhKj;F5FUCD zh#S4C{QUisobpiJ=7%;hD7E4(4q!HfxHJ|s+Jjy()C{^VhXw41a4qkcEWtI7#EgHO zV)2fVx+wOAD?TsJ9^(0_&8X+k-$hqDLyy#7=EOmN3TRtTPbp+sIbl6k(D4(O2?{*R zrG6$chObPx{OB+Un{N&;njA1A87Y zpx}C;B=XH{f?uxL)hiLlFX8FfRA!-gjNH&%82K^8?}RsIO3WSDjs6l!B(KTT@^V7- zW!!%;XTBYmA|P1k-Ig>kmaz9mRUZ_)c;J=cN{)_;_+-Bog`nV$ii~VCY@C`P+q+PL z5(|pb-BkVfNj&NC1-aIAT{qinz~eAPLF7JGSvPP-^)jB8PR`76<_^n^?;Os*m}2_w zLegSBmi79z_URY+Q20f^ByW{=^JwA>&H^bnanlC{KmdU0nVH5WAvAYrb8+HpiAw_- z8TpH9uhTK2N)?R%W&jQS`SW2}QoXFhXypuZuH1`?IvQ1l;g8q@U&hhEEseK6s#-_A zjX3-S!IoHE9FizX;D|a{kBLC)6<+GOYrK?_}lFeAtL0kDbXj4VCVy|Ep!5>T3cGwUwZl0fB$f*2U{7W+s{vUlA~Cu zn+Vgy7#xZ{4`S_7HGTDa4|%0SG5^5!Hfr-R;Rge0I4?+5uc)XHSA$NyU;hPlt-68l zAI;+EeB?`cuaRSXbWX;!M$yr+qo5+eqOoIr;NLgR4dEV@gWk zc^Ee*zbiQb5F3uU&H0!u5)YOU9$y*mbR3S1-mgnbiF?gUPA^TJU9V^g1aiu8$?KmP zf+jTZi@zwgWm7 z|BU7ot+V{-PhXGEf%Fa#4X8Lqp=r3blAxNF$Zcb7jf04h=G>=-1~x%K-J9PIisSGG znQ+zEIKFfaXHkoFR8}}y3kD25GhIa`4a*X#tdPS#=;_qg$e(S|z)ytWT`@y>5~3gb z{8{y(4Cw?!UtHOXeTMT!%uo5a0tyFfBVr$ z{u_o868{(k=(C&MU_!U_GCaJ7LjY_Dj?|o%L%j!ag`;K2`MU!MOZ%p)LN*l>2M0%C zXC^2DJcqFhS2a*RFT8zdgOVVM|Hd)bxij7nPh)oAGs#nM5RJX#3ZH_^G#u8Nhgrr} z(z3FLg51YF6~fNlquQs@&LzjG?^TeS+g*GkW>8r!sRgklX-6aKQE1WAi}6yJTUeC1 zF55mk=m~uDDaZUlanK+XM~|Xjv(+8B_Nlh54d_V)U|M6%j8e$1P-f-5l+)0lWVuE7 zK|a2Al*_2cakT*_(rzv&WHRs*D46cXqkNoK$M)Im4i(<*4 zIuo4wn|=sVc`vBu5>Y%r=lP{vBYnZ+m{q!}#HZg3rN_D;^ULu$HA{?$>@Ch7WJXm) zJeb3WHG-p~UlB^Th3Vd9oW#Z*7u_-W75_YyH9QoT+}z41-1XTCJM#=3COiE567T3z zQsas*bQo8CYtxBggUrmb(`jik3S~^2>d@z}Kpe~3Yf|{0j?bFr_;IDl&99hvIbG#r z!H|O_cR;W0)5!OOym9nChhR|ahp(@Bxj8v;1CboZ+mJr>98FI9-Jtys7z@D=iZ}h; zYYojky0_V`+)KROt=bQ-yezCBZ3{9-H9>dm82kAVf?)>71aX0SXeaYCD?RZq$b#zA zCV6-i{>EZrahSGMz8>~dEiC6(S#|kv)82j+2g{0|7a7Bg8Yp-&(A;FO8?{Qs;T za+p1?if8(z^!4xWei{e>i9IM& z>xN-GC7=joZy_pkJU&EeJcrf@i8lq--SDn`1SEXM8?p}) z+4wd&rDZHlLW?5qgGzp|p&ys}*hZM}@rjV330Uy-^|5-7ul@c_z?CA^Unat3lejQt z3ivl(pq?t9W*Aj%Vv%+?>1;GW-GgqnrS5UZXJE;Y?H$~>je`_o)~QNfWcR|bhzTKp zowAaD+%PkPI7TYF8?)oUS)LaZ!~m`Zh~m7-d?oTwkYP=?AMfevg5CC?ojU~u1Xh0k z&PjfT_<2gb>tJ^m_}qYlpA-8f-_%HErW9?h9?ER^#;fx^W7&{ zS>WF*lK9B!^;KlYCGDKrIux!lp52gqzEYjPpl?1 zPtJ2D2u8=_AlOLC!yg{?0;hr40AENO>N@D#SPe>pl9kS!NkJ*~Sl{;^7PS$o3#4J8 zT7`6B7|@Jw$VW*$Z6yEe=9D0!8D+WoE5bc#zaX*ezq9~p>OJ5ubZz4_Q=SVafl{l& zHbeL~sw)8;`t%YE&oG*j+B*;{{DPoh9*f}V(+`s`MQk_Ex%11I?s(>_S1|u(1rRS{ zFwMB|N0_KILYlK8Pmfe*g{w1XX=NYtB<)3Kd*Mj|Eme}x6+lb$E*iR?6}b0u${ zJoykfJL#JK%~01AD@7tpcVu$!(~3b;{@uE9 zQB)G}vv-q{=?}`J>rK zyI)I3{u0Cjbk_Fio_Z7QK2g%u&k*yHLf(E776rLamE%J$qmQ zsN*q5{?d*2XaTR^6Yp_(KsJY}LQ+B^C?rG#8wF}B9Qq4n`)JNxT#SkiYpnqJCP;7Y z`C-!z7pa4I@hK;uJb&a7so-IuGx>A3u)RYA7R<{H7z2~yh)<@dxW8-}brekaBSS+H zl9COP0{QqeVw$USqmuvhaX>&KhB^B@^2u)hZj3iLiW-tp5w`i}fb*b`}I`?au;m}Lbj zxChG!0Ys2zfdse;dYfl^aZ%BA-mgaJv29>E21uHfo(>z?zR9C==%I;4phyFzirMp9!r44vW6+<7(nHom3ilXLPV|0JcV>r$UjHe^>&QYI{)@cQV>ycZ`L` zt%KEyUW8tkih8s@{E`#E>$6adGBL@-DMx||f^5aORM(X$OOa9Galy(t|8am>S5Ptl zTW+kWX)e+ezK8g?yNdPjuA?phmw*@Q2;&{nA#W!%70GY?@JIu*vPs2f)_8>*Y(!r{ia(p5Pk=g51i` zfOB>y*5b8G_|2B&VG|bZSx?yVBAGTHkN7%&f8~$QwKUWBvgkg-H(-Ng&5|=WHT_6; z^6<1w4qs9$4qEK=ND+5IG~i34VfgZ?s4hFDVCPy+a%8lm4>e(uMHPDQ0vySQ+QU1ky8em^$xZSHc&R1#xWBQzN@Y64jqN@bgj-uUS+YsEdi%=C%SG2tVu zN213_zuv)`LiW!fV9gKFZ`Cv2Vi{F zO*P)*iLqoNWzZo*{qPQ-Py0hH<02_Pw;4VJ&UbQ4g*~)&u0n$0>PB0RI}nf`)SDwO zZyNn#k3I+rHBRuZ5HeFo6lUB5PaXO#k(kW?8r)z+zy`D0eHAG0toe_$# zAQvZE_MBrIX^;2xaYvH&->C)Ke?Ox$%(Yo!Fr&*K>TPbZUT$#64 zCprFfjZy*XXDOgqLjd)*jF$=9Z!6&zAJS_(B#wg~A;fWTVhw$1_YSt z^#dI0FGNb`72+IOSknmYPvwhlcu88Qx1%bU6%1VOQ+`4wzRQ)qbmW*NIotFOKQiL@ zf2(ErK0=q#-bRi@5T>-;*y0NvVLu=(rO4k|@%81xnh*V0yhNOG4!>DutI6f*KYJ`W zGOeAm!N(1I4AeVmk3Jx%mfcj#JUuV2*vO_pY)PzGWOHAU$b%E3b@#K`&X1w%&YAU> zgF`}ERs-Blsb|Q)IX`SRcy+<%K0LuS_%R5ME#wWDgZWT%lf8R*57oUP+BJF;tXwox znf$c3X-P>Q|A1+cpPT!Kl}O&P+vBy)tfd1$MZ~(E^0|J?-4-}9!%cwZe}kL#%DhJ= z{^&%g^eIqNUS7$XTjp17gKmm=btv7 z*N-&US`Z=Q(lvhJ>OFAgK2z<(Nd-MlN5LL9i|Dt_NbBm-c?#*&JntAJhr(_Fzlnq% zu|8ggZ$3uO;I0C}S&8x(gaYO+CMNJB)HQO3|S*+f8fyGujuuzmYxKAfVkJ+$Co1Yw-Msr=>j z^P43S=my3XAXFL4XoJ}R{3c-v=Hpw!$;=@2?3(Gx!lQjC&4C6OeV;>G1 zeqha^A5Z6ddr+xYjYu1!+vV%yqn&3WgOP-2ynwT*tX*c#482*%SQBx1TWdN|<8P>X zaR~t>D0Y}KhDf$hj#!pBlWL zXFg84J2=gd)Z=IieeSq-&%{`er2=F7e)AnSge>1_mA3s1fOmk5!bM^;0kkHh7wH=Q z^h>87Ic=^x_q-tD)vfl(S{8CxUoCXn02yVFrrt4U8~46)@~(z=v%Yey_SMv68nP(m zqvp~>7)F8cDmiL}amVbFrDA9h5UE{QH-=t7`kfq%@Qm#CM@NN6DJN=ff0s3tnLimF!tb zD=BeC;Yft+f(b>Zf=*)JeO9%C9p2DPu*r}UhE`&8lI$iSA=4)jG$We#0&_?Y+YO6A zZhA@W=Ti-zxTE>xx1p=$)*IFqRPLyVb8LF~2+@V?1>7fCIRHiy3knu+0_&96C&lK) z*|up;nC+0beQKZk-a><_&vL|?FT+0t$^$J9TxR1(z~1*rzwkWKY)ReqGONnF;Foygy_8UCYHNGSk~z4Aq|lP$2|;G*fBw%k zp?rbtv1SvgO9}tM4PoOpip!qAf5rjjnYb&!n{@kVZ5LX~9>eCKf7fwehA>yP^Px=B zaR=zF0sUqxP&4WVuha6m98+36XBoVkCS`rE&_9g+S0SfZ*trhCuhm*5O?|E}4LI{t zTJCBb`d;p5zn{o29!FZu6-&$2pWiMu1pLDb zM!ycNclQO_o~sIYoYbIRHk&I)FxR z67G4H6Yw+vN-u`s8tKwayz3#yY6n56Iu zCv|3dd;fz@hLC5_@zx@k=m%a>2ey^DV3LyN(4 zPs6zeS6+6Taq}j$E4#oxS|D@iv_U(m`&(ZTDe(V`1xzcbrt%tre%nsG% zB*O5+&7wI)E3H);s_N_aKGBZb+{@_oyd&q@r~MU%+3l8)Kr-*kdj9NL+!I#7WvX<8 zS5R`OPWm3|714$`CIfH~dZv*B-s;Eff2<(vqWUrFQy!d}(ip`ertp6;p}1T)qWubIdX(hSfDMHxu!+f2w}fDy-6Y?Egk40hfhmed^u=Mk9Jv#C119J9+B>e^E%(Z z(RhZS^-Wwvvy@RjrjhhvAU?^I8%B|r5PJa3EY!6DaD!~Cv+nzNZNJ_D*A2MWMu7BW z%0-pudW@f^XPMWIgxIVFY<$*gi>d<3GQJgzE`>m zp9_YZsmvCi?s)HuHV2=X=u#9R_oY~o$+VW`?Dqoi!ZvkltS-A5vu-?6Qz`m zTfUCN3q9RSsfQ@%NV4AO6&EyBQvAbXTdy5on{iEV!FMx1E&a@sm2|CacF9v{vp1KD ztC-5};Y5&94bll#_;A<&8Hu@MuyN5S%J^@%#G#YL<8Z_gnfWjOyefbY}MA8RA;a;>C9M5@(? zNq$mQRz9&oJ^kayHKBK(Gk~&nv4v?CUE{d_{kw761z#L{b`B?ngxmlqKw+r8Qe8vMt-3&ZBgLgkk=p3NOZK}F}eeta!8G*25KkTWJmwj2@I zhZUR8?QN?H0^B6~R`5<$I|)TljeD_%(E`;`Fa2>2PCHrJ zyfp0@%F)p=m_0+)m(9<==Ep)! zvq=&zdt%5X93U-nIN_eqLc6G_*y8CA98PuDd)X{joy5PZb`0qof{#@zdfzhc03w~= za3KEW*A_Z2N@+HR;9JZ?2X*fizfw$j!A(~a?YZeZu9fvmIgye1*3q?G)>R3u*IWw* z%FMl{T$N_b0g-~&p~O$W$E0wkQcXCJEqz5VUFhCH?#ZUJ2fUtZG6?S*-kKRYWyNJN zbUJM_v2#*xU9r$-y{`(x9NIbjfykaG;t;s=h0=EWqahX}`8GC|TD$+Ww~xO+OsYr^ z;*XjyFD%tHDn?t`C~5fl6&B|Ev*Y49+yv;}(k*MSicFl?Xo*Jpb1f>PS7jAxE~+@HT++23~w zhq|oBu2#LX_iM}OhXq@4XlpzoKYG;0jcNEjQY`W;&!s^efrKacH3&70zLeE5fkzLS z{Z_F{{XMN=)ZvD)3^?{&*vsc|xJZ-N?mSJ^mm!OLzdE22?U8J&eNbFpQ=DWk|JF&P zdrp-LUpmGekWou5jwuaWYgJn;^YoB^%RLK)Dhn1;m6AF5!s^J}bLJc~-;lc^%_5DP zkW3{tKQe`}4JWYM_3O!zx;YYa_YK-jGg0-Z{-E;%c6X_xXHXbRLtv`}AqlXlpgpz8UT7fb(b+$Yue1%LbQ-TD=<;NrLfXW9Dfp!Rlhq z)eSekGEn|z%R$1`_+Q{l9f1}Avg0^=)*KQmoXLz!eMMuZiwhnqrwygNNDsCm?)RmR zz5vkMZOScQa4(Q$uYpFg;EB*Oa@W}Ol&_6aRrz%2;6b!a zwpp5B5eqes1d^+9rH_F6ghcIj*ltwDWLP?}H!j7}Z6| znU~#QE}@6Ozc`9TkVH9-B$VUm_mHlO{K+GjSc2mZ!WtqmOh`yya5rdxjZx99m9F=k znutop%}cOtckWE}7SF;OMo14(j`YK9n?`vR_uE93LNIU=sXsGBtau{87|Df~p^*VG zbF%#*2G2a$3Vc<5m;QEz>NBO;oG|P|xPkSDDfMtG3RIpj%PYDrtRR`t z4Eexe&j(=CDi&HffRiBA>iOHkRV59Wd_fr`>_HMbeJwQ1{1@EAY` z+XH`M^R&>gK+GPnVb9!~8`=N@6&}i5fGM!50I?}~cm_h>hk5&Sp|}L!jvc^D*MPm0 zZ5gwLY`ZX>9h~3rWq`%XTVQkmxV>^gUQ?wwQvWYX@x4a{)q_LXPM*B9$+&_~k8i)> z{rhLTitYYO3xM$)GUF~uD=rm=bO%)nhp~vzFv~{S5b~C6qbg8_p?r}FaLf5|RNk5D z;sip2G2_tL*KC=P(9g}!W6XEmdUzBLaGaHnf>B7QfX9@Ou+;hO-Fbh)^T(kIWR3Ut z_aoz3FzOYKqFP&po%acPYgoonHy)i1ydG}&-H^ORDR%xzd0PGa$$oA~=EvR=JP}+F zyZ7t?E;R||S9g=go=9^0mTc7>*RLq0yIV~DQ zY~Z;gUS!|PW-IZ-jsVV{%&tI;6?Fct@9vJOr<8Y$A?(JvZ~;mi|I72(p0y|Wq!Cw~ zXsKguO%%*k!8km%HoMMansU-rAH4 z#bBx8n2Rlqs|eC3RC3VY*3L3j7{)|J*?b*rjDKG+rV4w5QK({S|7xRx?Vct4f@b`^ARA`W5Lm_l_vRa%Vd2tj*bhlNv2o_1!Z%JqcacO0!vsTET zo(U)XG$%L4sKirkKSEtV>(qDd*TtgLksAm7j{Qy59s?Y?(nferyNyv~5o>Mu>9v4; z$U{b>!pd6zI~#Y#kd~qIFqAkUqw4B^r{UX0Uz^&ZJHEIIumkR7u=_o&_;Br6#Kub|PEI@Yv+2i*8Dm@Hs zSPRMXS|@x9@Dvd)o)5o$h~cp)FxqWGf`fSx(V@Za^VlU(y=5QMrgU$*>_H+f9A82W zw}!JlA&(@wl5a35u3`AMTDz94N%Nwr>NJ5hXtcr^MFb>kBve6I7u;o(hMRe%mw)~w2j^BJ|F7Uv6eUHdAv?45 zv>Gpwi9f+!hRD}h7yfAEWT-hy)dsmFYqU59%?b;67OMi0NNgU{pe{gSI`~x&9JR;S zmXNO?1mok%?fY+Y@U?S2d7Fp(7SB0-Vta0GuIj|8B#0zXGPXAmA+(3?o0@vuCE;$2 zUTK%4mw?Rv?qA#02c$5F9zD9HZ+8o;p#0UEB>hqci+?>QX>Quke?UJIkE%AEY8� zabyK4B?vSXqr1M2g_1rSgg>gso|MfxnVTA|89iy92^9yFips|j<}`!TiAY9okDzL| z@DConV6dV?c3o7szB{4qE+-F<15g_rbr$I9kbHvoo_NlGLS4_{MQGf^EAs4j*J)Va zTRidg#s7IaG4nipi-b+3+ruz;417PT<3F?7M{s6i(`S@V%E$cWH_>H!KK!~zJj-KW z%V5cr&Xzip)o4yl`odO_<`_b)tJBMR_G}ntyjjR_$qNNGWUuJy+Rq>Vci-_mZL|$A z%J_O(KAOo}`*)2s%M@uf9&H4mFwjn*-T|+&4CUYpa)E>sGj~Fu0lnv|i2@Wv`ZX&n zBB*=*@C~qaxJb5eB0wjY{>V>&RgelS8pJusWd?m1bUT_zTN;lk#UYLHJ+<}5LBQ8N5O;1I`DYPfFHHEh2>E*-{iK--YfY!0=c0>7MfdwRQ?l5j9= zj_JdppK;#+ae~PsGB{}wvB8#zT8AMkC`dh5OTW|*W@(k{o4hd?SPg4O7!Zva3yFE>;kjwa@6j@Qs5F$n07gp+cIf4DJOWb;s6RRY?%U z0!()v>Iq1*!Z-KiEEonu(*{kw5I_Gi)HTVoU9}>QsB8w-1Il@4-Td~8rL;m=-Ufpk zAo1a?<^I*qTw^6`WEenvtc_9~&R#Bupj%E(2lnrWl~@poC6bg6QMhSMbS*+*^3AR5lXZ>hub*0^t*1>5(ojb-EfBlx|pVG|BKWK;U2?_ zs1U23N=W_zlLkVZ+pWt`QaCh+MygitV{Y2*hIe4#Dtjok-q4%0pv%!eFwq^D2Xu;Ajm1i6O)rQ z9d**>;Y9HF-&b+*$_^AksO#Zqx(etVIcxB)9sd(^@e!K{v|*~TRP6R`>de*uHIwS+ z@ebb~7A%gF|1sRh{`XX?yBY`o>xZsr{P!3pZOZ>1bfqczUjwlI_x)(5EZpvWD4&54 zHRuRnwlSU|_9T&oZAzVK4JoVx%4@WQ8jfQBeuSSXmzDFF39JCjJBE6zrP~&>_3bw28c(8?Hi)?+L9=& zd>LX!=`efSi#N@M4?C(m8s8?RlM*WcuevTx$G@W8h_N-0pd}<+6Da1!u15evS9dp? zQDwRK9wLYWFZJDC&pl}|IvvfQhQXeH|1h?kL{>8%5DnfXUgN{Kq*=YcOfI4jWwF~p zV?=ZiP@^F!9=CRS5+ew-72tT*#=Wt}7CvW+I5t z`!~Y3yvc9}uCrv9gW%wHo*M$dj7(E#bCJ9^(_5^xc=`D87&J2x=cy=B4tE;5vYk8k zQL>yT+Z$b$a-;8!qHSReliR}2rFK%hLrTh#jE>w}H<#Rs9*}*n zPHJ5#5wIlE~t5^&`d6Prqk*z*Cfi;|72~G>~YI(JgCK`~n+biL2iC zlkrra)4;|j(M|eLWfD%9V}K=KJnHY<*{q9w1BP^DEk+3|TR&2%s41rmMHUxc9apy! z=}Vo?P}9=5g=s$D|XINWLzZBYv;2G#ncuEm; z*{p^w(d_}p`ulih7oQ9zB-dqrl@#m0A0k|h{%3wZeq^7b z+<7v-i60{dQfC7u-Sq26lpba9nT`%}-D&KISo}MPd-0>BR07qp$LkUT`F4+fvfp5% z5SQSfIXJf}8k26I6yZ5Prz3FIV)H*=|GCTYFJ;x0mBrt4-hUe#fePU;GNL6<4JQdk z*+L+zI@sim!jV8+9xtQZqN3VN`DH*j-H(gfdZ<7Me@g09LtL|Yy?#C(3-+zX=VfNSW^Kl%A$k%u(O}E#@;$7og=dLrZ z6FlY?<-g4I979h&ua1mPXOlWLoQ3bx@{K5e?}gF`9ghL3tEv*J{a%gzaRW~l@g!Q} zd(XDpVP#!<%v@W*S9&#ON=5P%rr96vUCLIlU76EkoGF-pIX~=^_zZ41%WSgaEL01`f` zs(Bn?^sy}$&M2UDL5Mg{^_B@A$#qS`E_KJ<+ zV59Y3eT(mR>O+mn+Z{IV_DqUQ1-qQqB#A4`wP|%N|Fv|~Ami}f)k~A2h63XcKE99c zu5e4YPs?gFw7TYcvrnq-GH>KSRmU=UjOU%@xPhDeiNjljFv! z$=EwFL%b!PrB9x+^o`U~^@|5Ql0N*XZEEP=Y#*qi>vii+eTbt$$AycC^VzmdRzi7B ziJp(|HlQ}}q=&>&*At_dR9_IGlM#19adV?wBKr<1)qZ~@a#jH79)l_pcQM*>zWi9~P-_W{f*AD`u-$WI2AXa7!f5?jFyUrmpJH z)Rx5F$={)0X7VI<-rxMh#9?~s=s|Iu)LU0uNay0S{03xuw$$uY#8loU+@Bnk`JvS# zaK5hLT%Tq8ylvNI5|y80-vZR$vmaS2e4RS@cG}8LFT{4s-m5?{MU2tA3eT+a=)h|I ztK+xwxa@D`kscE+7&H0ziVS)fI~4QoOw4*`tOsiJQlM32@#w!!_Y;Y^7VkPcwQ99a zB4lwIeE@V(8ZUXj0doeg5klFs7uUGB4|>X)X+}nXXP87zB@R`ooJw7-T0?i=tB4n5 z-@iUHANC2vov0TgQ(|1ct|xPA;o}39;|Es8jk1sGiz<~|$I&%Ot+ zjY8CB@q2&iiE35W%PKWCH5?Rwt**uYlC5F7eqMF*^H$Jk^QE+sq_?r6P9}c#3MHqG z87?OImfnj>^zExl84@i|(O;R0)+pv~BBhU>Tj1@tn2S?L-U9(NeI+C<1ETq045#Q?g%C;*Oyhei-cV+$9A2JJ1yLWnZCk6MC^h-f%3 zG%-4Q#`}vo4`NPC&*rR5>~sh`Ei}2yk>;Fap}N`Z3E90h7Cil%SysP!>~Chx41PCk z=uY_1e2P&^?P>T~gfjO^?g&ulzI7{a`lvx6-^kM+&KuvE+9TuNNs0Tce?4-)Qd_`i zk0x`C*$LrspI;%_214WC`Yu{sTT`Dlo9TZYukSEiU)jQE+WkMS$qYjkm1n=|54{+o z0V<(~DipSDGCayqh8i#Bqq)3-=MDw0q zad@%i@cQ=hg3Z7URo}_3t{#EX_Rkfen7`28y}Z6w>>(BvT$88JN*!LRy(8clO%o4A z=*?z@>G;=E)SvS`NO54shTbw`>3e-gaByW)oFwM%)AU%A+-AG~$M(*i#u2;kFyGWb z6*9jQ5Yd~ow+Cn!@Y&s@q^>YCp>)qkx30Z7it1iN&cMI`qy%thcU;S|Y!54ci|*Tv zHSHGYu2I<5H`(pV-?}Kdg?C=7PtA z4;PHnOP)f(rN^JIrKtI^-27*i$BJJyV|Ma~&P?hP-l^YO$22YDEz`_4PFOIoeS33_ z-?aHZ&-Ls+U)xNHgl06d>Pv?3Qan6xydMKV#!Yd@*5wys6XN2uu}RwbM?l~_)l0f( zkG;M9hvV<1G=rZE1jv#*zP#-+RlBI?_~P_!H(nLmXB6UXORlfp)m=ZDX0|Lx-n28A zj4p&B>%ofih{Nlm|8YW?B)xFu)VgE!7M~5-GV~Kg(|A$17OyS zNbnMOP%7Ulf`4rXy>~*w4`|tAbt#ad0)!?y+7RR8oUbGK0^!#ekRLurp_g=G_Fm9L zsYizGzTQPm_B=B%#nzqM^go3-X6Ey}|4!PbL8J z5ch$i0`wi1fPgc;KFYjdC%ERznU z$N-Q`X(ggrVq>pBqdGG6PSb24ZfocewQ#xXWZP3pai1{8YwuGssl*r7*Z8s1nm&CL zdhI?vUOjzbZfdwM>jc8vCmh1eBJqrbnnr&ScL=J2Ue8M z@}IfjF-e_eNDG|BXv=)GyH7M)bSWeMk=c*^?i*h3yvbI-#~X!I+KhD6i-wE)3=R(B z8q~$Oa;r{A$>nTr{Cf|h5h}$u3Uw%i4I?8&ZY2plGxJ#_MISnRn1!(fcWx^4dq>RC z1Da8rzw!Tq?YFpLz;|$PlJz(32!gJi?8H<{1>G#ZbHq!zga;G?2v3jk$w`)Fa+th0 zxzDDdVA;~G5v##r$aL13(_`(`u-d!J?wQTz+l^>we!sgoY}v^k*|q$G)ne6neJN6J z{1vae!_xk!oeg6=W1UCP0>)&OaHHFFac8%W;3!(A_hC^%b)iU_2#~TEKN#luKuK zzO0HuppXTFsHjo201|XzG&+Hqwk6j+JT_7H=@#3v?Hf0Lca8K5dIL23pUbGkh1`Ch z!|Y9{4C{?Qef;Q8!zmu@u9w}3=|U_pHnFiOMB{tK7}pctXV0G1hGy+rvGqBj(gwl_y-^v| z8oi##OVhS@mosTT8n3DzmhDDcapgnWQI^MBV=?R{PAqJe{euf1E>TUl)xQ8Iz^@sMw@~xF_Jk2UlJ z8w%CZNTxGOmj0);QIjv!0~L0|GyW`;dA!_8rw{%+J3Ll=+2+qbvTfV{32f!xes|md zf8fslJ#WC&sv$}tOsF-Y>`zQ4Voc9S$o>0J@hnZ-L!Oh0hTAms{d>l3%kgns6>L>K z^zXy|--n+4-}43kAAlPFzkFFm8U}Z3hsVZ{*l}UNEE-0ooH2j+E|66tTte{GIb1GeUSR)tw3gGcx2hR-5*Z4P<|+>q}ofzd7}AFD<5E zhJ}O>(?L+qq_aQWfw(bXxcQ~jiy`GQd;3Z83UMw^qQQpX~C$**4BLdjfNPjrNPbnUE6on=^uh;n;75v`YZ@j zfc*7(o7`W<9gq?6OfiLA94SVrr}lyU`GJbq&g zW{d(|)Nf}@zk=#xac=H;GGdX|ATiRgao)6#{(a%k7koE;?!!(-qdS!eiYavs4G4yl z2JB5+6o@3oRF#t;d%#KYgWAa8{{tEXaB9r(rd|k-FwkvlGs7jl!w0w zpD)x5DXl9jB5Eo-)SAtCkS7Pe0z*%JEiY#$R;WiKfP?w4E0HCyp-m$PuX}APG&-mI z|DhyzlE&Kse@_GeLPEHX4o5>p@Xv$Zd>7pno0y;ff{X#)exbw7lZ((zQj3FhR+rC} z9UUCZfi4;BzWUNr=C80+qQ-t@R8@&YGISkUj&`g$$R$Bs`zC5S!1;I=uO_|^Dt-EJ z^gDQBLHwE^=-jfB|6dzI`@;G*D0s zQG(*ywUN_4EAnqWyPY9@}`;W)q%MiQY7E- zE*lvT52D=`-3Yd8U|;|}&3ZA>UEFzLhyosDirlAUhyhsVB@w#JK7AHa8UiUjr<@!U zV`NbrSyACG*>@@#tW(f8`9EO7&qRi^Iv+8OaMwP%#K?K*(=$3Oka~#r4!(Q5fN!I9 zhDa8Iu&>akwD3(14eM)^h--PN8Qv!Ooqqq z9m>)KFWdzZ0YWO6lG(Yr=Yc*UJs4_K=(6VyL(#@k#RyqTG<+d;^b$}WqTeQ{1*|q; z%Xm*{1~PyoCQ(*mSAyn7bA+Xj|3JzlWNHW{sU^?A!diy#2R{xa76R20lah{#xS>Mq zYMD=_K=csh57bilOQ_TkO$m1hdI^?kHUvEZ_a?%2(V`IMd4ms_=8VFM$D-xK9ryO> zW)NeL`$4pU2?fZ{2VupoopW)&RV5`_cYt@bR~r^B@TYU+_^x6N!s^At`~U3jN+35FC-Y zb!^L0rXN)%5E@%74$*w+L@Ix~Z>ejVumAOl%B06d1c zeXgdj!}ovo1qUfT7)fAd1K7QA*-3c(0G!4`h+$4OIo-ZZj0(m|ODMlB7{z|##0e1* zB3KPItD3ETMmt6@tUjPNRHlUTs}Npk@Jm%sq z(_^0ytb{JBno}9~2~^2>ws8koIo(0))_2$8kJJy!F#2ES#=w}8 ztVj!jk&rxPif}@l@s$FHfeb77b}DAHBPdUvmz$Zn_B=xx2=&)EI+#bXkt8UesncP| zGW;J6Oerl`Ao2yZ6yoJ`wJf-VR2wZiGP^-Mn#8A+Tuy-XsYP`2S3ryA@8znktS8d7 z(YTlqAQu#}k%r-%)hfE(xU%FTMbTkHfg9Qp>;e9C*xH0yugassPC_*e%NlV5*B(rf z5?{#Osv};{HL`KE)&4aLY5oZXaQ`ga)?l^)U_;Hrfn2n34WV=AZbF+fS0`|5B=v80 z=$xR9th_b)bfE=CL$0Uqcm!?|PHNmw17%K1bTac0=4e(cAwj(m)dL=7T?1Rvas+u9 zEuVFmeL(|$Ij+NOND2s-62!(rM5e6AR5E(qB`6x0M~5KVtms^HsZi#b=TS&$rQQ1w zLoPEG#RBhcb zR2xMM<4h+mw=3rm=DKdhg6d100uU2zuC)Ot!eV?s&FkP!%(M70{e;7 zo67;mjvhM1g=-BNhM(u5CN(j3)A+NBqpvs&yfQ`#8H8P$jnCFRJituW#dubkKS{o6KdVIxy0QxqwRM97$=BGRN85tRl~nj}NEA(<*E zLy|N{lO{7oWk_irjHQ7R3Q>Nqx4rjw{nqmbJnMPZ`rhla_QI#(zOVOno!5CD=W!gT zTEx;-^V{@^3AOhWRzpL4+rXGLK?hRAp)BK`Bq@lv9gGQ-zkd-CTiZ^n=86=1W`GqA zVtDt`j|$#)|L(eJe-Xo3wnE{^2oB*E5L8URo5-E9zlSfmT|GAuUVdMk@F7D4y=TsTeQ{-nv!80owB8PyF?!S}$b_|Z z#|2JNj_L=TofZ9c(TpXne_;tM{SBjK{_+0N$Zcks7y`fEDzu5EfL5uMwg*Zse4yGTa`EdgzlV<- zu<{8ZFk%iVXr@dO2VnAAIA=ndt9p=>gUG-|Qp3Rexo07!%N^L!OL(j=y?aiTj<k zcMFHZTlB$@r19dBHXOXPGE#5A5O)TjTD{48{rWYBM&^t~$W_#XbH-2h`Nm1bvu*0F zfJ&(n0vez6(@%b`<{-^n#1Dbtqw-w$C%MOoz7GBMGjbGA$xg_6MA+$(#~Hc$EAqUD z)-J4T#jOT}VhC!b2H&vV$)+|Kn!M8#BSi*$p?LakWi$UZZsBilpS8FWinpax1F2xd z!Aqh-SPy=!9$6H4>c}ogS2SxySUBW@*JOfFMyucKkI{HwQ0}9H$u@aet3|?Av~4G> zBkOVN+;dRspH&~is^?KWlxJ#7Gk*H05*`o_qi6Vtl0aRS*b0Kl7(uOJUxE>O*rt+q zKLVFc`J+viW8tZPZezChGIQvQfqrkKz=b|J+sya2BC|VwAm4fG*4Yp-Ufnwoe(|DU znHzl~B$#_O@Z1USZ?Ag4(H%YCuq9>O7er+nlbd~cbZZg>rb%W=-iU~u zYj6KoEt@t_q1JAWEYcg@n|RzyAZJywpEiP| z_L7+g#VEnSrsBS6LY-d!tPF}hay&{j2P7OLBmUjAVvBPZ`U=&=NJY$)S9wI+#o=?v zL>7{@U)A?3L*45}w!ZMY4iDV6Ohwbg#Du%`dq2AqgH1n7F1lJ)S&28{nX64b`iWn=Y=nJ=(-&zI|e zaI(;{gOA0FEFK=E@UWpFJ8W9%{!g6NaDH(u21eoag;90j)T`#`jg(Y8@Z8jRWS!j9 zCt$Od&rZqtC`P0|x;S*~vHl4t6>fdJ+fRDOW9HK{Gp!UU(pRpK@tP@Wf%nzRP4qU6 zIy1wc)2dePS~;q)Bj)cE=>(gqiO+l}SRNK#_Dq+Xd?lX%<8Xbi;^q@qf97;GH42hjB*OsdE#F)=l5~-VH z)}A{3BE!D&+OerezUwcs7Z2^-V3J>?8?}0*v;5S!?`3rnT6rm@b&=Kz^75x54YU_X z6Ug#{q-Qnm96xOM@B=$YuzbuA&PE&n&)YEfYLj~#)*v$t7N zD%F~mk@JOMD^sPaT^!ct=>6kNOt$f%fP2L@sV0!y=ae3JbT-F0=gt&nm-vd$3Yj1$ zw_N@aBrsvxUzfeu@ZndC5-sWABgi1pcn{~1BOdtObmz{UKRY|Mm4@G7NY5uLvPar^ z22Da==vGt`BOTl`qoV3F-kqQE&OC3##eg~uis9PC$Etw=>(`o^R#J@ym1*fq1MWLa ziC*z;yq@2&=*+}WHxhDUbg1a~apPVFuCajjmgb~yd~T&O_mlUpA1@3H7yN!qF(Ol? zV+B^w+Z0Jv5uVYCsZR9Ot(s!U7ekUCV;dp27Mit1sw#y^fK9YP?TJW+RTwM})U=U3 z?DR0dZ%eVMnHk(q74|3{8DWG|Mt$*`wKH3DC?n*S?GmVWZf@yL`xS2eOoBc)%;-4- zc-<>XN(_VN=J=2|<`$vZW?}T>KXP*hWQ)VhFbLRk zR0dqp+6K^>?IpHiLJ2m5~ zqU0eE3&n?4n>VL1+fs4V1sfo(45#5jwiJJrj$+C}3^r@Nl;Bn${ImC*>g0{wqIuH_ zHWbNSL5=s_37mi^Hwrgj1Wib;ivqCaxG;(c-@g+gBG>DsANRQRv>iWCEIW9g#_))?u3WDMR3aC{!)qNrsU9pV zGb%b`frtsRK!mg_?-7HW$JpC$wj;Ud)620%;DytpAgJ zRi!@!al}p)=;5s1;iE^-6NR~wIh*;SAK;(+&x9_nEYV+WDgg4>Bb9xQf56QV5HwWL@wwQCd?= zEAQ#kpvroi)Cxw2^3PGDdVh7}PjfxKM2(tmhnumjh-xmSL%^$w!NTl6hg6h(%z|L` zp3_}4sAwkN=c=A}Z5=2K^DW`3C|YcsHUd&KLm^ws{7yTvZoH4<{*hoBEB`SGiYew~ z3Dy#~cD_638ZdPT7-3^iG>5*b{!E?_PC34h5kddJ8Zk9Zss|~$94fDAhdjy8{{gQt z5iXj$%_8BoyETU!<$KxIk83s9WS_oNl$X1ZlL5W(F2BFrHxLv^iT3~ZnkE7;t8%0z zhY&*LX_Qs}d!c{!5rE966Qx8XNv87W8HM@!E+=s87geU6x}(!$so2V}t5;V?^lU3$v)uCyLY#p9uVuA>rYK(> zJo2gW;M=X<79YOPNXi=aff z{J?aItgJZsl;YB-LQ#L;_Sk5ZO*S!GZdkmCH&rg$_7jYY@Gtj{5$2#~x1F1w@o0`< zQ*-g|&saoLw!c3Gn z^bFCU;?N1W!9dGkrUdUMW+|PKGG=%1O@0c(IEA&IA5y9LtKIeiZV}Hmapg6>J$-Y2 z!1BP*0UJJT(hl8O8+GpT~_>vv!VfSnSZ8VY&9y_+?PtmCcL`AkiA4#_6R&x0V=j9@Jq7VDq z;ogGk_KL|Xf^t*MjVvXi?}x#jazV?uuBfNYkl+xwK$+>cJh+)nR|!cK&xC;(Yxd{n zO&K@t0%aZ!H$rga*gVSUf5}v^m%CC50FSeCa^29bKI8hgZ6!;2b2>@%ZgH_t+X1UW z{!?M@kIMp`--{OD=knTZm75N_nOCox-!*L+e`h%|?8Ab)^!HDJd6V@G6er1iU)U_z zd{Cwf)d@JS_s5ru-EDwpFep}WpLU0G_$w(zU#)*;3+nVi6XIz(r1~M{>GmJjjL&)h zk&F21?S)HF3yvINE|r$1CL_A6%dUpW{&>v)6?5^(?>E%Vd;O|iI)kqYPJ1Lf9Eb5Y z0AxX31N1iJfAQ$#jf9>(YuDEOALirF)cJ{r9Cm*atZUKbYQJ4cRpAZ>M4M&(W8L3P zyKeJFT2KDIP%vu+LMr@1w2Qqq&3h9mauqZeDl+)@HDoeE*J1eZQ0jDa008nr%Axf5 zpZ7Iw?Bd*CbJ)oI&(t93^_5q^C~J4NE;R`H=bgONT=M@ZfXRY2DDnJ6RxKT z^SOm4&gRXSUcV%@a*nul3!!)otvv!lUW0y<}xxj2Zsfi7B_dGe`Ov`Ib2EV8m!asOiKu*sN%&OV@NR)H>QE~<2lEy zRYHC()lVK2R>ay9S>l$A>>E3=~W3umWzt0Ra9{FL;0So;YS=)rIBGa=C}2L0gsA2gR76DbxKr`S!T3vsXL>h`&H_27g1FfR2oH9Kl9H6q&S}-Msov^?4_!itO9(xD(O~k$9%VbA~Q~22++evznf`*1>5UV0!)gO-Zr2xUdCR=CQ6Fhza=!Mu z+crHSL`V+ZQKVJ5rVVv<>cii|F{61`!8JD zl#!k;Fx{QqaZx%v{Q&}6O#BsYe%mW52%PCx*ZevDgf&GBiw&bwXbpf8x-^M7N`&du zx3pY|jis4<#@~N~t*tN%kd%j3ekc_IT>lz0LrPEJ-P`jNt;HBe4@ZQs#P=G}Z>v zP@XL#BTVOHSOeWquCAcmjn|LS-yqgrkBZW0&8mMM?T@a{*ti_5$lZ~w5O-V3H%U1; zx#`ne=?IAO%f$Bq?}nyf)~!3P&ms)3C7hwzh)e7)KZr z*XeGNB}rDxI|}pjm#S!=EPMO5ZP5t{PaZvjuDBJCE_;bs&pCS6lNrM@V#cN;^r+i{^%zttZtpmDEig{i!bR`J*DKfH{|sAIgT5VT(o8Zp9VLsaS67O^3!C0!{i`aST76k=&zV%T;q*=qGE zV#o&%tBq$UIW6dr5b^dB(q>FCBszR@iR1_qK`oPKvV5E}pW|#p`qlW;oxLF)s6{I| zmdnwO_AXM`?t6CMaQR%P?cnfOz5I}d)WxS#Y|hcsEqh8{x^Q8)vj4>FPp8Di#nqQC zO>~&}{ve-kK79B>aXphd3IQ&O-JWr{sY41iXXw?B6R?K&EP@MMOth$}0RUlP$1dE( z=ACq{u(-I5Eb9886Rg<}Ca94LJ}$AVN$Q>TobbPQ;TPH5S>Y11Z3 zyX$tB$;TszB+vkHbHa$7(&Kyp| z^MXxn!JjHxkSt^y28c&=>d@T$KpTF-(5}#tj#%B10Ongt$DBP89o+z8M!U*w^B2JT zZJ~3}E0Do16Dg-!p*8?-%n$-4^~>q3i7G0U&!2x`9ztBVs_hDsCx_jdK8^B*dhzYj z5!x$O2**QW7w9=o>J{WKgH!=Q?%lmRbd`=xVzy-~)zO{!L?lcDC1xFwaCjqja>1PB zeZpu(XXC(-Nj}0v1NtXE$9Yp|%>skIcY^MaT=r6^zYx~4w}Zw5Qq%MgjRZ;(^~2lS zV%+A)Wk2y?vJD@*&LZQ>`Ja3X@2Fs%nBXc*+axK74{|Z+Z_aFI`QP}=QLQ=lk;I)J zdjD+Gv17(8aHyJ{t#?^sNO3~1rEO8R^n`%wf|dI%BT#JJI<4R0LW!IDvJ9wt+d1(q zlaSwh16k#?N5~at_Wv}6@cesDq;UT6mHXnDE=S)v3ZXryf1_G1Hw3o#NK1MV7$Z z0k-~l^v{(d&x(pFnT4ZVry% zC)O)QH%&OCErUMXZ#`bGo=h))$#CAXQROU>4MG5r3pY{K!HwWWj9_SKJtS(mem%Fw zW_lp$axlp{#%7qwM{ZFY{|ufpJ4~6G7R~+xe~(xLr70;`nZ7wP{p1JZDPq{9Bp%$z zI5)55QiJ1JQ>^`5-Ur80isBRaYUx7w7jz@;`6dUo`GCuno6*#+iotdb+`_V_ZZeaa|@eeI1WUy^6;d8RhYs%T;j0 zfrw?WQqccvl_s}O6!U%a=FPCC!xMEQ6Gsf2dA0LB8Y(3v{no6j$;nxy7hBpL=TA7H zF?8(Mr@nii&0scf4PkWXLU4N{3+ul{KjGI^JgEFt1K;PXkyPZmb?Zy%jiP<`V|jOY z$VF<@?OaZ>V|>4J00n5r!f&L61bIo}{rhS*lE!K$muH8(GXZ<`(@64{_WAbxd#kFf zc&EGo0^ptfu_BOb6Qc*Wu!|mMPqc8iI%pC0J`ST}E{H)xhAeTt8}CQ|%;I+Jtm}Fg zz?yUKj$)9+{_nu=%kC{w+rK5uLDsO1X>~l72jfq^A4MV$(q-hE$!IG{HL1ZQQ?2c} z&3gbdoEOJeUKn5UXy}_rlw@DhB1jp;e)b(O;JmWq`PZTPxW&{+J$%H?7T6V)V_Z^1+9ze0|-w82FncC>Uypop`Go>ox0=gODtC<&u?7X_tB`5uY<5 zP)mAnALU)8MB-Un3Y&Pg2>SARU*?B6*JvhFTTEak_(?fSeV)&Gs0q~?OW>x z)q}7zVI7*uldUGAujee3%?K;pyj#7z4+R+g8i|kuefgkDZWmrm_;N+0y=;R$1Sp}6 z07DCj5cgAkR!nc{__#O`Ndh_0=*3}6RW2V=qp>(5(J1cqE;pkig2W!km_i(e64GXmu)p`h+nH zcg^F=fqL+La6<(2rO#I4)#1^LY>SS!Z&<(n8Cp`+gDgnW#zV;Nl9NC0?bWY-!>to1 zo>5{N%nKK60!KscvB8r#JUkqMFA!zJNX8-U9&r1u;`HfEqG5Vi2s%UFFdwWw2V7T2 z{G=Xqxi7%-L@DYV))E*YXhDbxQFS+cIqXGa>IWYZTyCj&5ja=g^iuJ1JZ(!q8>l#AMi$>gzKk~r zd#3*FUnCklK0+(3skr!f!S)!f#*(zqY3uhM_N>F4?CYmb<9!&qL<(Gh{|n4DvN@%m z1e7JWI?^oqx#%Uv7_Yg{Jt@qH`9y5wtK;6YmNuPo?SH(}jcrg@Q!8*|th+fz`J|c$4m|kh zPF_;ETUOuh_jx5M_t}3}_#F*}*(D{jWMmEw*eup}e;gbnIESQ(i}Pn~dwrjpN^mNq z;7GBfTKQ59w*n(M4pD^~W0R~6J}dT%7JgXIz1%{8lhOQ4zB;_gz%jIcoRAmp_EzjE zJ=6E^dt?QAW@d3Ey-6Ncd8fVLcr(3+-2k9Lxj|mn@aqeuHWlvmRhYT6e;(xI3|1xG z=5S}%bij5{gs zNP@o0V_Bi888)mKV3(XyR28sfi^S|-hR#PMM|-UZUrugJ65)?v%tMmS?VfIAT3;fr*U}&2L`A?U3&-uphclM=^K` z!ZkQ1<4-`pVzgROGK#GM?N@{`Pb6{;EB4YIv1$#X`Y7rZrbDn^WwM%`4f+y~ZHR)x zv4aPNTB>l@BFAAM#p2>2H1Ak)+8FIkrN{m@A=z=?5Nj;SQ}m|5qq2jQe6pitCwUgj zPX4IipDQ(3)7o0b?|z@2-Dd?QsNd=*-p@aG;{^31Wh8T;2asHN3|x7eOp0N8+Px9( zJ@TfG@86%fnc3OB7ebUrhFSBwcgwsFxRD?&TGVa+VS+Q~awHMYoJnz)mbCPdAa0`)&fCsizp(N8s+LbE9U;X}UWC;b40?$iFM~6aBUlvl>D{df`a+UJSuBh-n1d)7VH80?VhOrY< zD7MRu9U*cYEbw6Ex;RJpS6UcA0Iz1TvtH9!@uQem|N0%-Z9y zhg)aIOd*T#8#U)-JR_SJnACtan(J@aLMMpIH3!>Bbu6YEEjt3{aKdVLSl2u6t^@K{ zM~MA6B_KulbEe@&Muk@V?tYg-#nPjqN$hqDLw`CA1qU>TWo{u^nV^~v&Em&CeI>5o)s zn5dmpbhftwz(& zMBO(Ly6Y#eWi)pE-nyG?&wk?dkM{ z{I|u`>zX4BmMP3veTe59B8c)1GTibh?Hy>VG!%qa~iqBcwWE;Z%w;lAQA zZ&u1LmSZuuW%W%;tW>I3e}27x3EqM8Q@os(ZEdQrFR1%k|7?Po=B57W7ccHrPFtj^ z+Wp+l0+7pX&3lDD{-)(yW~YWg>l!lJ2|pQai^G8^f|>I^Y+%Lly64BU#C}-$YB5t| zwN0~QFtm`!uVckqHk5hA?eUUqQqMZ@*)XPfLF)Es0qx&;{J58C@>{2jMdMy}`N#Cd zKdEC>{^L#euAX?Q)GAX7gUo%4^=^vg!^*ctjMk6U4}Y(=lnW?g{#E9^jKMUDmKxlB z`nNG>t|rCBt=QH*l{SAtujbjaQ$dmT56HuLSr`HY`Gp6^zFxa*mVNf-f$h>so2OOO z`iQ=6YRb?5c<*wmrPZd9l4T8BhYcMXwP3h~y-|vOgCt#g3he!=VX?7t3NE{K{R($k zn;6i*6#Ba~!a**-Bwj!2ekVQCwPodSvXIDc^2)6uYqYfbI`;2ZB6IHS>Jyf)8zAs! ze!Sw{=_`L#{($p{aZl-s4x98XR^nXYo_Ca-DRQUM((s_o$n?j7?z8jz8N+@5NIY|% z4IwrY0aGW8vip_ipE%s5els6niONxJns-a>8s4V?GEV6hUt)iC z7C<~{HV6LzK6ChX`FR{0F@5hWlT)(VYuAR(($Le>%f76dmDIOqcX|;P_die{xeULs z>$z=a+^v{GpE~+Saci8a#S70idX;*7|0J#O$9&1RpruF_4*Po!Rwe5}tHXrkY9SUs z4oNJDczy2HE+E38lWrNtdfC3y6}Wld#!1RV8#B;nikPq3c&2Ia_@lo~ZvUKRx$}T1 zBTS@EXxz6wgxB~|HcW-H%%d0cY5=Q7v@VOKj>CMgUBZ^?iVDHKPb_;nB{KSL@&kviu zKhikhcI(Hvo%nZ*eyty-R4dYHwfBbewryekwDNO2j>W9BsjwEa(X|_+wSCnIkK%df zLUu1t%u)Jkel==OM1-`&g52=f*nCR^AtDr3j257047MPm4r0Pj*j26y8WX`Pt`3YQ zCW9gPmCKy_rf=8Il2fa8;M_elYsja05HyIlytVh6XOQZ%laK%UamLRi?auF!y>(!LB(Tcj<*FqwQcbkeh?vg(&kget$kSg2)|<|}G^hAS zLWHwn&xqdQbDgc-+-56;p4lPu*gxFx$MYuUs^r=bLx1*^9S+@+UU4AOLXW@5f#C-d#I~H<)PS!<|S7%eo9zHxmDA& zrd4lb7MGdX0lSwL*p$r&57#d;-?Qjr$)k*lpc5w+4-aT}wERP)c(Q$uxZ%3?k{ai8 zV%(R8{E#nmk)l|?G9kmv!o);tc>N~v%(F8YGoOGRF~MN6tnBNFKhD#Shu2xy&v3{Q zKff7@iopNYYPzz43+V4$y7ZR(M=LGTzuVPORd#nDV2ge2_tHyEoLJaLw?5HFRdRF| z?vB}W6P-5r9)17{HOyZ1dP6UzW$~BuUwdd3bw$k_5MJ{*`dN#~JklVB3(NUwFsPe! zk!}|LJ!`9T(0<*bV1MjFuP1dfhN{4G|t@Hta0Y>1vCvOdObS`-4%gvvEu6;s# zYwIiRPi1cjw97WDd>}r(ere?pBtLAjw$;5qwdFo6i;haPwKzdt#*}hO8`X!{ZXsdj>L8NpA(yLS)H%U{x+{K1m$*78$H z!Rrsrra2USLUqdud#~2hV9hi}TpJ4aKi+Z0^0ghIpCqG3%kWjzp5T-p`z$ks)==7j zmDp>eSNW|*S8zbgC2J)7v^37eHbIo6F^1DE`(V*v_>2_{Q*_4Qs z*g*sRjx3MRo$5THk+~I;YVtu)UbnunWO-d4WV>y?zjy6>%k>;abbmLggT;H7-lSJJ zH{c2d!S&aEqg6^CJXlsedajC!T#a7nRDKd$_84@)3hOPV2oOFkbKGN2>a|T{k-5=spw?auQjB z&Y^i0iFQ-Y-HpJuzc940{)6cYd9#jdNI9Q>?Xg+a(ad(H`6+evhMcx7KhQcFtCmrOTXq6vt@{N@IpckL{`))e0L`OFn>ag*P<3e(@qn-n_Vf5UR zD{G&Y6qR=ZS8@TTSE|gOeO2j%){te_&y>~AaZngGdh|J%DcFpXSaFj!x7&4TXIBl< zqLyXmMYA~h13H{p0k*OIX`7*<-}cl{1nO5w##$ zg}?`G%vUAdz{N80v}@2uc6DyO!K02ChsUuix4)om*K2fnV{Pry$Uz&yHg}O<^Uf%I zGS#;SC7T!>Jf-Y^fsTUZu2*zP=)gce*d2j&-stgZQ47d>!ngEWvNpxLMo&xxwtx@?4g_VMGQ9k=NZdxAAlY15hIaUX$o zOU3}TD*V?$VN4aP_+F15(xqR~-ZY{S7M{kgm@x+I6>r>uDpX!l`0-U+E^gPA=w~C0 z+NS6W-PJK!5xtPo&l5o9vXD1jP=j3)-JJi(?&^%S^kpd!!AywN8mf?;9H2L6`urNt)RV6DP~B4y6(F&3q9Sll8WWdz1fe&}fxILTSjat|mFsV?wA4Qv zpj{oZ=A8O1Ur>-|`*Hgb%6V?KhG*dqpw#N=>VlAPS4*VDX5<@Bjr(E1!=~?FO5ESk zRANutg~WW#BZZyKRdYaXBO}u&%=nNP=Ev|e2}GNF>@r?BMfXQ)fsB!qD?KQomHs@s zh`}*nE{z(APOYz(&fPZYhBoTA`+@vRrI zqB%fJ2QJFb-$FBqVMky+s$m}ieq5H-iU&1n2Z<&jnaUIu7xw_Vg!o3>J!KISGj_GG z`^hC%xVz8M9)um$N62BQ-d#UbxBzLgCu8F)6*?ssj}tY6hQUv_`qs zyoMB{W#NJVXR?);FL;Z5Jhpd^^vr~-SGRJZkpGGuQiEN=<~n@q`0!!FXyVchT)5Di zF?q222KU|1_4IE4pL9MK{CGdZZ}^Q?`Xp!C$4#3#vorM9_pz!E=?L_Z1iV?e?KQhS z2{sODS8$55WmJ!iha5mQ-ZVBc(dMZ{Zh|rIkkmIe(I|6v zadE$~3wa_3P(y^X^vX{sHX(uX{N~|oJx1N8kS&mv9?pKv8Tt5UG>!^RJ)!|w;VC4g zrVcx##ui2?GQwOTD4)>n?j_N*l}`rxQB?F7jVyW@jO0Dn_yyGJ8i03uJD;9?RXbo< zP=2jIq@S<6Z3*hbObVItCm!CtYY7u8?#dPh)No)dL*wQ?vF79OgNXMm8>IBAzhY?c z@_B&@O=gEz{DnUpJC^cz^RYa|U^~tNy3KX-o%PY>y{)Y+zUk#zVHiw_EZEnl4{_OI zF_r99m^%roy8rLL`}W)m-dHep#%Xd>O4!7pkgT%?lTK&|{@wtQsv=iz6TGjNk03lP zq>sqGmS{9ea55Fk@lu{R@$Vf`k&WqM;?2;Ocq|B8QP!i$$aQ8I0{Ks@{k5Cq53`=T z5(N+cj?tAIV2J1{b9+5t?;Bf+39kPjV^CU#_uWrmbxvA%IVMJHo5vr1Aj#a_gz7D9 zk?wmg(DH|}u*uQ<=1${mB@f$~lOn`h6S9-n-}^IU&JA{cRare>Fm&@2X`izyu19yR zCBU0svxDqw3~lUCNNK5Qbj<>TE2cD~cc{<-w2zY;%1(XRx&Qphimmj{A?^~__SMq! z(QQDK!4&1}Kc~#VhXAbHT~o7`o(iB+NN4m_9#tF32BL97X;GkA6y+iHZH(f^hr}=Uu{&92xT)^Pl$5qiQ`nHp zYC`BQ(=t#$e=6vA>J>UKIqsW}c{FEd5k(Dj`zvYvAmPS2+y9%r-kW%~~p08eBzW-7G8Fgkc$ zUk|{wb5?wq<(4>YC#O%BH2vMG3ka!h_uQJ~FPY3-d+c*@f$L(CuwZGo=vUH%bK#{i z-RSYun8u)F-8P3;*RME%sgVKJ)&y--EGI0(V!Z$30_Zfde>SdLT2WqJ9){Bv_cNNe zEIwgkz&-P!p&|Ihi96Mssd0&uji<}@^nV|y6#<<@9|Sw?PTHyCZKZFXOw5I%@tB|T zscXf~Q)d`8c{mtj+af$Qft<)9Q0Y|{;B6R$cuyY>6KP`T<|P<&vz#GS3$K(ZdKt1+xH zve89gB>l3bHIW^#SjZE8E$ZH50=6v0>$cxCT_IxpqeyY;s3voG8c3<%5w`5?eiESA zxGMu&ExF@iOe!fU!Mx8zoGz9#!uBXM&EQ~T0<^;4svH9~N({{W91{#&D;&UlAl_`;7!VTDf%Z0Ypqff4y|T*@5v}KKBs6H;!Dz=S-IpWdLWc>1ha*REcbk(W0-k{jdVRjeJ~ z9<5c4C7i&HkX$NYm<8QoHHZfId_8TcGx%k7P+;KFchk-AZ%Io&a^{RFpgIl66%)7c z%$Cdz?cPmkd{wHjDY|S@hCI0U5ihlP%gOPuT!{JGQB4!nCrL?NeNWFw)9qUC-LAcx zO@yz%&_~0$N4E0 z`R$M*h`P!yle=M^{rC($Du+hhZr!5#x=t0|khR%qy?@QY_*+Wf|FPU>O=NpY3%JAY z*P>X_|1A3Xd;I@c_w$$k{ic7G=>KO6VQxRh?un~!s{8DJ-+s4lZoR`Ie+$un|BH2? zp{G_tr%mvzfxZ9dOKhJ#G1~m)f473LApd(N{@oV;kA*0-Z|rV;3g{X6&DO2fRu`^Z zDd|m@n}q0W$f*+{rxL=F{wJ{foZ-ANlNKQuHMk=H*H_wA|wo)B~y;PR8_;uN}%6aDH_jj*RinZ>S)`7Q_!&mpN`ye z4qlr6+=?0Zw2GEDnDS-~3=G;TKd7j}Wiv|Tzk^hPjk-WSxb!lj`@+b*cM2-Yb|


}z)f=v6Pdc9k{6#Z|9+n%`?q&I-gIjj>c`=&a0BNC|jLbu3 zj#KxOJ4+-fGYp$01oq%HWQc!`?0=!`ddq^cInpn*X=br$BJ&~rkwcJT3=!$+?580m zjI$gydi0sNoo!D1D^>Vq`K9JHor7=ckr@`<9&qx%E$9ML7`vmT#*3}eEKb)2BqAgv zq%eqLlTth;UO7}l3jBoL%xWsZ#@;h$%-FKdJ1vKluKjg(zi9oKFXj|hOP1VY5tKG6 z7W@gz9@YlBm8}?Azn9U}xqf4}9hC;N9aoM2-buq=Ex&s`^ zuF9^C-%5emILk?EiWptN(l`75eWMqwM%=8v&w#oIM@HT=FXEBZ%p!py-IT?BS4Jis z3<2H@Qxw_3u(GyP#)pNy!mSBD!WxvYY*_vq9E_TF?O;`OZCRe)Do$@jemtaXF6$uI zoZLKP&Ya+zB*|}@o1c`txbE&B|Mkn4jZIY34IPj<0hu~}{GiP0;DJ-XQ5{hj+bst) zrOaX@Q{-a)CQyt>>k%-*t%FV#V`%lkR_+zwQ$E=nDXe9pz(|7wA?z8aT9k5{j1+|Q z&s)aF5wrq!&o4k75=dO%3MvE+qS2Iu4|*Vj&;=e-em;GAi_eQNldKFBP0*ia`x#tW zV(=5K6T>Xk!5!mY0lLw}shP!!#;pVm9_BiD=ul_!xwB`_B3L%*qR0`L-a(S@XemOZ z`GFdsTpY-(J+91|_5)Jl3_x2RY=OE3%NG(dm$4bJ(`s@6&@8hm7`6&AAKg1^#Hgg> zOiW@8!o$&hJica}=5X%yq1h@bFW!9o^hx)|#D62?g*^p&NevN~FLSC-NmkUdw1_JflN-WeL0^8VCN-ReNp~8A(wM@`IWZEi)JW)9^CiWuW{+; z&yO*;hCe}T%<|*vwQE5DU%^hGb$`^)&tS^2Mq4?_mH@!}>Z+=;Ncz|a2chDCG7j6m z1Me65vZv3Kp4oN((IY$B)_|Z88x*EYd3&?z<;#zij<-OB4u6HR>Q5<&kfZ$Gy$wLJ zRjvkcOAG{%*?!=iui8bW$^7c-a}vRYAv~t-;WkG!q%x7jjINekI{q1c7ljZ{ zv`-xsRb|aG25HI*jd@2yVgYTm&*M*;QE-BI(G0E%6yzBPrJhpE16x>BW~CN~$r6lh zf7H-UjxJlP8x3SNSzRild-v`<{z!*%isPXZPMU!R!)Z%hx(<43z{(LGC|IxA;plX_ z;wFf--FGSmbh&H73;vBK1=B>dX3fXT+`&ywSvg3am3SPwFf<+&69 zjfJMibb>PLcQgby_gWU?5T>!V_l|IQ*JmG?*HA_1awhUiRyBqm}q=3l^NO+$AE(V|1+EC(w*7 z_ked$#dX5WHSnO$wlrY1-?B*n%y zK^thQu1wfNAuZ@Lwkdgeb+XpUL3Ebbw~@wc1y+dXp~5s`B(`SvSFT+ms7^YnpyY9Y zi>j*5-rU&F=lF#S<6sB3e*%i6stn8LsLutTB|q>g=i=bULhn|6h_zGvmqi2)Q)I}9 ziyQc+<=nIu8Ud^0mJ|n`I_2T+{%n4~{dZBPvDu2!a2Zt_zq;CHJHpR&1%?PO&JwG8 z`xYje0v!iML97Vr2a@g=oMIvMOZpsPc&^Jm=wa`bf&uSN{b1y7Zrr;o`}Z$(a#Hjy z{R$F%|Gv-gl@V{9zC*VG5x8UioeCFS-j1Uv;i_DP3(s$ptz={Wf48m~O>+b8g5JM& z;AlaR|MtzzVa**-RWzlUk46^>ceR5?GfW;5lT8Yo2=Y%6Nx%=KS!&PD2fnx3v7;S^ zkkVEYM-&Iiq*0$Q+6a0SlLUwHui;`WAE`zgtVbM?=mP?0;m zVj`)U_}6NFS!w4shdzBI8O5|tV8C;1QadG-J$0+0cutuzr7Rz6>ehGTWu{K871JFj zDwCrWjl}HJ_><4kAe1G=$4~vL`sVU5t>w#O*N)l#@2W&8e+hUl3yeySvZ5wFCdRTy zB6wKCGLyezzws;NSd{N~6nhD-Dx{Up8MFZGl3Bvy z*l+)?gpRj})=fEw60*db43vagE-rIwLZ98{j zA;!{f;sfuslGQaiAbYWB$|sEo-Qv%#%cV{t``VZNi5pXpsGg~0drJ@2M8pYbQ>=aR ziS`fPLAhOw8F(C?XVT_%1{2}Cs(<#9i;0fLkj1jc(`9go_noBSV5gt1FB|_u;=hYY z`}Rls_>)=@2HtPtncG>H5T~M@e375*|4X6{ZggPbR7#KM72CsKULLx+@u5Y$Mz!eq zO#K$0C__!7Nc}LKbRHRtCpgZPlw2DV8J;r0;JM5_f5=}KQd$pYTLQSDe1;PnRU8&5 zu`w<_Lu}ZvM5~DTJGc01=(3wF^T|M+*JI^jSId>CFE{1iC!jQuy%@vT+B!k7?oMbI z#1i>5O(40^*R(QaK=8JOMkXeCXPzGuwY0JM{-r@r-0`A&sJqR^fKzvBYHo%_KGR6w zaH@}_(C4?mz|OL@)haDYk!{(FOi)ahm~!3muxKI1zx+L<`6tPbb1n9dZW)&Jo?y&& zcDNWAP^ksh^{df=H^(Y6Xj*{i7k1Q7$WD(*Ox%XY1y+QIdt`>r_slu9r71aD>t)ga z8iZG3VlI~M<@2GoXIlc$mH$~4CH?OQwC=z6r1nHc>e4c>)4j!gu>ZgT+Q}zxzU^<- z36Ftvt0r@m!!!-@{5f-;t&7~b&h%cW9!guQIGZCcKAm} zMa^d3hv($MhiJl;=Yu_htN(q2aYwggf2>%!vhF6j%!!UYV8YBTFtu?nQ&b+TR(xu3 zreyl+IW7lcl_i_a{9QJWwOsK1?GT4scX<#_Ppk1M^E#yAM6Hxyk{ZJm4h`q!W$jp-FZsQ`H=cr7u?OC7)qIP%n9}Q`Kdp?eYTI^{(BChdUejoeh&mx~Z63g7 zGGxSvhZe{{$EfT$qHG;PweY8@z~vaQZJ2NN;ouVzf-QB`65$eugqvV)`ca_1&Gh)A z@qp=Il(!DY8Qnd!uRvBy+)R_VtL6B2fgG({Z++20qMAA<`PUB8uVzz9Kxl05rPKCo z+ZWh<&pJ|mf7a?O`($GgTCnpC~ca!5% zrt)k!@b8{0*gDou=j2K?>kS)};6%#`#qTo4MRD_uK(4q^` znVs>PH8cb_k!quzr-4e1_5>LOWyI3)Cp4ryKG*e^Xx2VZqDXZB7XbUJv2brfAh>;S z&AInO*kgQp6J)xs(`%&J`xvincwh8 zeb!HBAtobl)py}Td4Na_g`av6rnn;ZImGI?GR&xbj#FYJeGnu9X4@<8wf@Hi$WSER z%geh2EleU z{&=p^*hpq5i%3+pqPigBXs=v3OIdky3*EzQ2RvhINq6kZA3ZuEKhLv$g^h>De`~yV z;Et8K&r|+lbOIgO8@oC~loy5{h9cAa>eXTqc!cs(r`o^o-gN~lS-}x+idaz)K~f-# z&N&L^Lz~8E%`&<)q@TFs7&NRb`$VZGq-i<1ba#LIt5mkfOQZjYNl4iAUEN3Zl|Xbj zGO}p5zh@SIGP||woOWC}E>00WE|QUDysEei*n~rD&Y!*d_1sJU8@8V6wtS>&NN)tx z%8Jz`$*b>RVFZnc?8@ukjv7G)p{h16ee;i>S3Tm|>rWmEJ(-(3=XeGO21+BWe4&|W zG;bYYtjC}HJcj%p6jk)@`pG?;bUY13I;0{1f*h4hS|u8KW@!%Q8X6*wwQQ!w8%zF+ zh8G52i`-~y(oucZ(?=A@47_EG?I*I2_I8+x-ZWbq>R-%UvocygPa+`GDqrlH(37Uf zcz)vmTXK7rDdh|9BU=wV{xo3tkRf`N34-rQ#R50HVI98S&e3IHDviC;8}GoK*a?NL z-&ziGDoG|1n(ax=C$2bs+d{AkOFg%VS$S&XZ61BHL1u%i>f9@5uOHk9w1=z?@oTww z@QQ1IfSF%MjTjMi+U?wO*+72v^Q<#cl7g42&|VJ|7)(w7_vf1>qe;5-#jP-YW3ZY0 z;6p2l)eg*oGVv=(IqCY(L+be%U}@Aii9uv_7kX^yBgutB6CEC>p?GTUqet&?B!m~? z)`U(BWFaUxIM)=TpDNBdAF0^zB-$LV5pFA?%F&e%8jHEt(OtHw+0!#rqVG{=k-ahP zVdz)7h@*cG0L!WC85dfiRd#&QJ4onX$~TANNho*I0IeW1i)(%!qLAZ$ktKaI^j$Gg z7-Ys{PB(RmG}ccX5E%19Ey`slY-~OFfTZubM-mJT43HK-sji+sVZy$zC0wm2?d~Rl-*DTtidWuMQwIc9nl((J8k7hn}9xq9V)+hW|FJtv~Y z2F!SumF;spb>Y;ayNPa4!o&CN3k%z05=sPmd~eyYnaZ|VV_d}#A?{96 z&n>>G(_vHbewe(42x%4OD~W*q=qt#gU&zj2{=#=Uy4>siTPq@ zO|Gm$?M4CuA$r@8y|>M4rctG^15o^R1@u;(3a1DO%Axd(3>=4EgSBz1;=SV-*OdYLL}b8#O$s=_!)q;< z@%(pc^S9g9la79U)mwVcvcL;cw-4OMKbxA*&USh5in{mjI4&UMIyb*=%Lo)9{C;rXQY7ollM7cW{;9BS*1 z`FHKtEqJS@+^w4#Gzqxp?q9c`6Zk*8c780-`!x0)Nss^?2_=`d>4^=Ew(e&Rh!TZGz?2sC7SxBb9)(~D7dj9SB@9zLqH)LS> zKmX2uP4-{-54fd0Ic)F$fUmSo`56Cw-T&L)q<#Cv3+5&Z@HL?Xdn3|5`VZNHAQSWw z?5|>;^F3)PDdYnf7itbsSqLV=p<;yI#2sA=;McEV-*6M8?5tvAMnp!g#UCaALFe%m zXJ$yUh5L}78EstG0y{p`An2^H|9Iz$HL~_1%TNBfBm&l;oRA? zDch@Z3ehv~SyX^bSpCIz&|!)c5lMIpUs_u;z@);*zP|D1)vNWuuSoc7-@u4_Tv(Vy zXUAkg^MU)nou5t$qQ;*kenN7iJfKgXU`SXw{nlh1ThO7=W_e5Dd5664reB8sIUf<{ zk418CrztAJ5feo6MDx^N1+m&SH8o_nyclF{-I#P+MQZ9)KY2!xIF(W%($TOTzrx1B zVdaFAP8su5R6Gd<$*?J-#TDFg&hETmN3L?7!p2hh>L=seufc&B6#t)haXHs^D2&dTET0`(v+VcA? zQEN|_uw;r@OI3z{)=k(6-S^z4@_2R(W1&^UU%z=n;Zj-u!~2S+)JfQb@a!imDh~Ea zdoclgpO(X)fByMvtmoG;YxF999s5;*XO8aVLQQG^QFm8_`AlA|c6aof*(3f++jjb| zdrE)(Ipf}uocboEH?xmE8?jkkO7TRrS|80JfrFi7Mqj?x-qpEneshznS4o9uT4nL3 z<{xc8x1^R-Y%y;#IZ*A<^3}!sO4hjkms`(wYZS8 zDRcQBAI166901=dS^q5UukE4%JMCervJjpOiBUax<%+@?hJv`lqbCD|nHfs-1!ZY( zYkQoVi}&5zg*6b3x83Lya$CF)?ksLpZU8A5Xi1k?i5-Jk1W@x8ibU6pNy|-XuxH9EtFs%A0I4LI5&U3 zIEc56U_B%?XU=z`Jl7sTl3nznLw#nq`KZGiWKaS>{Bt~^2D z3Y#k@YP~&lEJC5DyE`s4bR~t-FEi7mI`7)GYvh114Ivw4!jKh4ZzAt9dT{UFy(do+ zE?x5JpEy2!Bu9^tN^hH*e*814V@thj5?3$%KD<^QK6!HV(4nwn`vEj1#KmbAL5H-N zEx))|p$b8#695PZ{PnA~WgX6OgYW1f)FPX1ov}8BMH9Xvl^s)CPyt#6xQ zS9X=teQusRCIANaLI8hJnKQ)Y208{avnon~=kc1MvP3>qidrjIf?@aczG0(2&~L{h zEs?OG6xA@%g`2@yZ``;+xBzpdLDUd*be4F#<+YTQ_gF-Omr6>}&Y*~bB#ci#u zT-fRqV30WVt8e}b8*SQzENBPZB92nXnKRtGXG8~&9lJJCrTXz>dvbE%2hb@lUBdO= zVLc~3eEj$W@_xtiq*{{lZ!MOOXRc~pyVvJ9Cr0R|B_$~`xstnG{QT7ZyW~fFxV4C< zg0&8>p?#NHT3*ca_7vj9%g0hSh0j$7W(8-h>m#}G@z?yet5=ls$ORE2trYq0{pdFyW{u{?mP8aYhCNQ&htH;H60Pd^QOtmzsAHn$v5iIc!7}{ zr{_Q)C`Y5L%cf<}sB zsCXWWs708mmNQtEW!X5Qoo}XO5&Yuk)=ui6_W?(I2(pF4$Yh!koZUY0Ew+j$Z^XPu z$_2$X%DcV8`JSfnt#`;dOP%NzMKByxLc9-Kt{MH`-oWL&Xg|FTH0ByTIBQn}M0M9W8ej!cm+x=hy^BUehbO8aRw?j#;VG~Rw*tE4y;OE? zqM;8Twoqh<*xG?~P+RUMxK8^GH?0(K?8}ff-H#qQLbhJ-A3~@M`>m!Na7(oLYccIN z$TU^~(%L0|_;Bu3ln`IerWPgSNwx7fMN;FzZfRlN&R7E8GboG*M*7Xm>JG{H^OerO zEfHp~%#6E3X^pAFDnEL>)-*)1Q>NUzdUgK2ddM;6HoO~*7=IH*8avyv79$CS0|RCc zSC}FSGhc%JKjvd;cE;udMx55)+8{E@o#v&AXyqOALEwcb2pydb zy9H4-F>>0(9SQC5RW2Ju@@Yu1l2^9Y4U z@OA1QgwU{?<-^W2d|B-)quCFkbjC}QR&5^A_(o_4&4borNE_3+Z)${mq@!@@BEjTMl zj~gm5%Lg6P42Jjb_UZBF#_sdlwp(x9`0R@LY)&K$BhR!d-Nng{>(*23UdzOfQ%Gs5 z8}xbq_YnemF!n&okg1#I6G>2{6ewOysN$V~+q^;_j$bv5_?ENf5vQMV%iMl`60^}Y zN}sbRfFz{h%%CpieVBNCC^Vw<#iITz0!|i3+-#t6IC|_@!(?msvuqe>GQ)VOimS`+ zZM_cz%fIrNdotOe;KxlSlEzP9u9>H(=KNcw-_+W0 z2MS-sSsS;V^<0L0yDhoz2#U&*Ul*rQOj1;{mW`tA0;W(9WUm%icnR0ycOLQh4 zl^;pu!x!R4?9hBgZ~co?4)y5%Li*k=5oQt+wDo$CTrXLq`b0X=Qo4ByZWD^<-go*@ zK%gGbEWW!2@Rz`*fdzSaYol5S%yOCSK@)30- z=8F2wuv>3oA?KV;Kfk9Rs)H7eui_@+J=viak2&8KWyQmr*zXcif1jDsFlymEQAU6Y zIbeql{iBtUnp#5`z2xj&3_FNqirOHP^re>d(yl@=95L|>Bs{VM>!X1_75mBUmiPF& z$^9%JoUI|P+$5-ryZEYAIXv#;XRZS)0Jk}P^vgpv>gjgh6KX;*+%O%zL3SEuB$d%g zv7@|ozo!HY9zOit-O{qMX6TOI>c0pq;rnPWGIyE11G*BS4LuH1$zwFSBPcMueLYpD zr$*how?Sg@p2uXphU?sE}0hc8Io`@Ql5;HYMzyJiSmaBt4#+fA0Ej&w>RNb$F-{`daC$1<5TbJbNc}E4Usu2;>Q_%nv}f zwN!MfiV8t*%M`ugIIS5%#w}rEEc@-YYO>OV8`$lCl0`Yq5juHI z=qN4;*9eJxHaTE_0yLKF7<*oW5%ymI9V4izmnlosM(`&;k=Te_&+| zaZTuGZ?*qgtg{AD510vuKp`ItbH<0XE$pzc$em0LlO_dP4r=&5Yt|%_NS>XS^`9G` zKFI09=>$p!+DVP9*<5rOEw@R3VQFsLgvkm^n5?_es#TLsqN#IG`E2Ef+LyzxmDLQ0 zVHR3BO&-6O;idSAI%qvId|e41@>#P`G%wLrtKTQ!E97anI02bSU=m~Fy>?R0#!HOS zGa2ul%+3#;O@o+m1c;K<3~8Y_q`;@Z>|jxy}~ z!Uc2gVF}b6Z_tf_Nt{$BL&6LfPqy}v;H1GYXl-&CsM|3@AkZn|8iP4mS0C#Ub0hWT zY#~ls50sQ96wzA}8X5{pmHb?mLwt0${6UD5rAzy2Tww_zj1-)XRAHqzb>+_Um`;Xf zVG!rT2yia@9=s}I5QFcje$y7Unj4UU^qQ`1u&Sy?VdEjqT>+66rIw zk0-0xrtm3CcC`>gnnO8)ffKWo|H>TxEWbXH^}~C@y=Is5C5(!w#1HYM`+2byy;+B! z=oLPH)Z%f5a^*|j3azf)bI zA?z0vg#-S)UT4|g^1s4w5OaWbQaUdY-Ra;^O~{h$RmS+i0twoCI8;Kekx)6Wz!nfZ zRkX7fEq}o#-I5|41p2}S=-*oV@cbZiULBSj0z@F^5?FE`SGV6T0=MSju?ndt5#w}A z`XS3$p{W5g&Lo`Em6Ob`xPAG8ZV8oND(hD?>HT{bwusy-XnuC_(?IPph6y$-Z*yXz z4Am-(me1Z9$oF~$hC-cuh&89_Vcjp!vsnFoT?19k(r$wQZTz7W0RHfY!+?|kMy%LM zA@pWbN|if7e`=sD6jU681XPlH85V9wuTcC;2=S(GaunqdT!T{S<{tj^JASp1k<^eO zI?oL#btQbG=Bi#9YjQKXm)56za1p$2&NLvri8}{d$3Hyq>kiZA*vl}DF`8(!Y?R>e+D?A5%1leHw(xeRM|OV5 zGSXU|`0J#ez9TR?(xR7VREGOxrC&3dQ^|#<$<%R`P3(XfEw{ARMi}YNdcQ)^8P3%_$9>w{TkW)uFC8~bZI@g?#4-h8E)EZr+N=Dr z;)#IxrtV4uGc5#8pPy%f=&|oBOlpVz|gXQYTt$F%qW)6{lpe;bXp{g`tH|iLwOuq z$ui13$y=2@ddXIuD=9AicScKUN(xcPFJOQ;$`90qi%etHXg7>(`8*84z+8EesiCyt zQQrrS$U7naZ)Asv#ur7YldykTE!T}U#yxJH`Vzsb*7eHWQ^6lBI~l{i8`O?wQihhh z2M>I#e(NZ9N0AxjP%h;w>R6j@1|!sV%};wD=&<*?Ww)PTkqxfNCA%C)0UbD;$)(v+ zzi*Kw`OLh7WiZfbxs5O=y0NF4pc+w;H5uo1V%qS@pt?Z|W`D9-pVrdE`&nk7>C{mD zYSv(yAj@O3S@lS7V@o;nj`ba?9U4~LO+@I0X7pZInC(SF5V1`}PqbJ6{^8aWAEV&g z>AO)y;)FOetL2Z6yZ1R`^?`RNK|%bZ=!;3x(J@StGaMI2nvy;65*jCWBa;-e}aLd7ACW5SQgV+Jn(;glJ?gsh!S#RAs!CRMf zuhdu7VbXVZae}WG^bzCj$8X7##oVlC9YGR8xBcl;{|31Ai%O#PL0+0aR zfa1Ofb+ijJy``q zF1?5eLK_N;E+mH!2z5>&S>NMzPuG_EFwoY*4(qRh9_r4Az#=MeeqPX#qpSlSMQTT} z_m0k1B-Bo5wx0&{otu141oIhO7FH@hm|JV-CkQZ2PmG;>UK4bnoJU!FQ*-g*kwu0{3@2Kw<_RI{6haaC$ zh=py=V|u#uUYg5|MhsG3G5EsO0mV}XNXz-;-1}#4$~A)^A=pm3@P1@uZyL*f{Z=YS z2@Ndg}_@vJj?j!4_Xvo}M}Oq~p)3HPk75l?PQd zCD8L%Y`2{^Z{AOjBR#+c_3ot8aMN%7Rb{&@S!g+r#V7^+|qv66Sd;nOJc*vLmV z2ryxKfiT2jq;unPj+~`S-_bFQ7yA<7B<11yB>48;6R*M*-YzxD@t)Fz%*(}n)2B4! zii$mT)J;6k50_>+RMyhP(uk>y9<4oF;pETNJrjz9f>j3Gy}Rq+sD4HZ9lGzf8g3l2 z?D(p2?i8h&(-k6=BRdFwO}DF+(Qt&EtPs0#XZqd9k$vY*vIxB_JVSt*U8Ldy)Lpe* zMu;C@nuI2C=7DUxQt!E)7x>Dj!$jvU*5J5PNB`71ZPu(-8kl(VE*EJ!a^xo1i=5h&BVQ z7(H-h`|Pzl^_TtGo3egu%ziJ6nzM>MQ#X#k8C~6=<*yx52FC8|o5RAU%~|NRILt7D z`itU@Pw7M)_p98=Pv*)=p1@}@YJu;LEdADgnf)EC?d>%u$UTzcwRySRfy0&T7Bq05 z91ln_f+qZ-A1(C2?^8}5>wece`DayA;#H56CuwkJz}Zr#10a0RMTtFBb=zu2reStp zBYFLO!Qj-ZGc@~{X6(DOq0DyS6#cmEDm88?cDZKfje4W{>eI(O42qa9AVb2l(p{Rz zkZ!h2fq zKtfE={jyo}Y&h|*)m#y@h!gG^=MqkO>z`7sK(T>g`YtXB0Rh82m-Kc!!M7GaSo~*i zAiG(&-uaJ{A&<@op;%CS&($5xbIayTw5$)BG=BUEnY$zbQxge#oU4lmoR}{;bZF8U z_4I?nM;PFOa(}0~;#M7n?O*fuWgdBB9VxS9W5SLvU8_YMC@7>%n0|FJJdSOxw!qZS>GtoO869#HqhBn16EV<3 zjP30!b`&{bjt+VFp0}5+Tc=mJq;i^aq^i-i`stD*6mH5*>`iV`|nrh#e@`GoZ{ep`Lh17 zCDf>1p7HaDRxvJVittM=lNq+${dDuv2cMN7&P66{jmn_zC6*xa%PD)AJHEz`IB$>Y zC^U3pOkg-KUzb%^E6J?9Wvt@m8?>9jWAS}<_K&4rP?0dOyc^RGr;X3&i-K77>!z!* zbK_nbba9-|cE0E0Q>e27boT@r^J4sYd#l@?yUs|J8fWy~3?Hc;ZMua(zua2oV*Tqc z?eFZjRr&nzdg|co+95Da_8T^g8dmrC&YxW2?jLNIRcJBz_sRxp`J!W|$GVG%h(I+C zmXZ>JS;#~WGI%|Dh_Z#K^DN8B4NLdzQI#bCVqEcOC1ghkN$Hxh#%{?vIelx^uH#uf zLgp=qXyECk-SZ`!a?_?_ur-<$%Ap35+P%N3sl2(fX3pFxKSXB%$^&{d`3}^NnDGQlEHOJH+bhxQZ%w z7tRYem%i+wx}mR%zi3Jq@OHN-Bx2tfCKljn1#_bvupeJu;GPAq(K-qm2&gcs@qVjs zn7RJ(*1u&M_k#m~_;=SGJ8D75klonln$WA{PI;CI238)N-c~dXdiQG1DKx%CTe>|f zYH~k|D*5Po9lovjd(@lF>mFrpSUrU)g-694-#h*Kw3lDP*S1spR8K7i!_b;|5gvpy zxFXstyW{An)Ijg=99wOZ`u6R++IVv7%don8#l5=jW*vZ9tZb3+Ht6#2f?||tgEbc! zD0-6xaStnMaTmYO&_rp^R+e?qrDAAAEdf}>db9UP!2mV4cD7lxl|;WstBj0}zrG@o z5mFkHv+w&AeY0S?KhQ8}&4dl3ns9_>^h(${kC&6n9W-g}_0+;eLOl{}Y(*3)d$228 zBV`KuR*+z(jI?nl3?uBJ?7$g9_8S%-6oQb@_^uJrJF5arP1+SA=%wTO^zDllQV1p$ zJTvr4?{TS!y>G4kGSAj=gAqM+pgxaPX6B9}nvX|7`qc9d1^zzvHx<0Wi$0U_1j7Tq zg#iJZ4Dp0o;T~mgV%=oNOIzf?eLmh*auUfk4W%#u1=paD&ma_Sl9JlbC(+_fbQFY# zkS5~V@N{#A?F4oaq`f541Eyp>C3>EcRlO5VPnRO=_Sjvqk8BN@=NOLIiRPZw3D8h5joE zmR4aw0ZejBao-rB5mvoT7Y}m9K#_#~4cD*__X&{U@83CMu|QhOg}}@woDs}z%GpA{AtdT^zc}ux@K*l38UfkgzijnqK{@+y zHv->r)sOel03#{4%DOS|(@TCVea0fM)#ZBy9V1a+6F!La!r@6hT?rzVZ_n42h!?JOc`2;tO8j9SA{o)+JYQO{Z$*rd%2$llTF|F8v9~%RHs7i?qI}hQ#gM9(1aGUf}&D@~x!&ZDRDbWLz=BkQ!?y5|z zWJSVf@DUJ0pzOFeMWG3>L-Rx_M*JQ1PvMb|tT3w%`@Wt#K8Q`CB$+&9 zd@Ik#ZAbV|EE+86eoNMvni>d_m1yg25rz?$kn1klLGYIto+U=bE*%#Y8R^gKD%jJm zaPSBaMct9DF%Y``<2G;HSeGOpB(80>ERvPO2L~C4u;KE^trN2UTba|~otT)Y+G}qU zXN|h_q655*Eu#eAF#FJi^=6+29PHlCI6cDu<(FP$!HWDG|8VX5RS(+nzcGD^vgFLG z;}N{=lwc1ZJ<6G`u%Fd$W>)y?^8tgj)3dl6t!wk+vmgJIZdz;A(OnR&vptxsSwl67 zrIJ0ZrOh9O2XEpg*T~IHn2pqZJ8N9&;r@0rCXHC=a?4@LN45)Y;k~(v5yFm7bzEzp z2Hfg^KSDj_*SI91L1sM2hQ~~j03l>npx&@+%hiW3x3aRLH>tKeow?^=)6fYkri_dD zIdJ9Hz>yk`(KG^VWcXVBHJ#&+9Xl2mx7X28eMG$P2!F9h#^2d4QJzag_d#d^gitBO za)tyjUr-P(*rug$_iXbb7l@~2K6Gp`hkL!3EODx17WgvT`Mt2JOa`3`hD@RAG4NSC z$v{u98VCo>_V$4-1yVB_2L;VNM9>@WeQ$j$yy>tS-FwaLXQ+nFz#H`dx)tA`HAY4% zuj~zG*C~PXJYp&NgdWXv)^!-}DmK?n@8+faNtc zu9!-mHB?iaU~n>2i@!hT@Y;8Ch5FP+Nm+I71 zv2xFzSYO}4T9g?#cw z3m5iI7RW=Om-?I5pEm^BBxFyXduXBh;0r!x!Q4NN4+iQTAElQN9c|BReJf7nWa%nJ zsot8JeW(_?+zq_CctszLs?9&##=4)KUN|}Dc|!Xll7YdjKY#deA2|#CVn6SObXrpw z`a}RC6qrrJ<4m6N)tPEQ-C0?iuqxJj}=89K#^gdO3d8% z=fc7)35Y`4=jG+a8*yj9B^L?F0>B6rcvQpr_o8XP|_?GPK)N z9{J^|<~?LB_<(M;m*z0U%GP=4pg{`@IE!Zyq}aqWr>J!EnEUkaut8cX#CZNWa_&Qh z4rNcCH~JhKxyrWp!AusST8DCJp#UVNE#=%8Q&V9QwxF?BQ+ufS@*ZbFbToat_2R`R zHk`wc&8QVmPdyesmtg;6M%3krN=h8tB&%kmr$?7>o6GhisBMXu+Cm@CPu1v~vtj}b zgTKoG2b(GsI&b2`~)|+mR1Lgiv|HL zP4x21+9A1!3@Rs$ds-RCE=rdxp$*}y#r6-1Gn<{1SdYyka>vTc=Y+fVI5;DNjfGLI z)~jv^JQlAwzW`tDtUVU<-a(I6#`tu~V~h0MgXQKZ(bIE^%7EoEZIBPasdH}u`%uU4 zoWvLAJ^yLzpU-NaRr7e>qVd+*xBSrmB{l*E-QBAodGHmLUNq)rRxQLIw6jYW6{JBJ z8u@jPUln&|J3RIyQtSExUEPz99<{O&V%fmb%bX+=W8d4V~2y)atRToR|$oWy42y;5b>&G>c6Bfo1BIL&cX+e$c=!^;j-o>a3 z4_1)i{OCdG-;9@0W&aWXHRR8Wx~rb?e+Rk?Z+@45ME)ZJ?CyU?fIa!o2(ZTgEjMh! z|NBdwH!tn~s2kC@>0#8vK0al;_jZ1G;lFBoXkU~2Uw-BABv zV7kTPKWrK6|I^Fi_@7>mvj5G?vFbm)9RKex{k_Wv|F66eLlb^Q?0H z1^Kgd+!#T0gp6V9dZ>D)WWTqMM@KzcA6GSt?7!)Ck|yw|${z1s;hbcQWVB<-x@r*YDiP zzAZ zRFX^x+AnJagUM6rq7q914Aa2$iR|- z70Z{`F+{L(OHJ@tT>dg{AZcjQNzYlBzvL@^k|Hk+p^%gA)2(9#R+X9#`kdFUDG6Nw zD8?SwL6Af6$(yK9Jxg=lS7Bjmx&L9jp}L?TClFNEIwe9~b+PMDRX{b@791rb&{ z0O}C#1$cqAnjUF4x6}PB;~hT!IYR{-c?N{}bP6l`;l2Rq^ROjA5g-vSN>N_jZ=pZi z)-LD~+9*xwnlwj^Dnf@zj!+_5D=emE%fwAH2s46tpff@J2oxwtW^t+zcZNj2LVBdE zdvj|msj{?EtkE?6F0@QHO7`$sVWxoV+4}fDTrP@BVJ^l<-}r8Tov8Q(g(`^;8jEON z1m1PsTLVF>#bn=A+qX~B_&^WCK$&;R$-;z06n42bcz|e~s&4(kBT=l!lPsMim;&6z zi8N6Cj%v^SEGYgf5*xmMH$yXprWCH-^i1Mcc!D1yf;5X&A{^if-$If{>PNSBEw{FX%UgpnJOHH2-(+-!pim z9eLIZ?Ct*FS^zS8=zYtd5VO6Q&-_ft@3P3ksyBJk zKvPGU{kqc#QP~)Ytr0TG&Yy?wk6{6TMel~?W~*Ga>M;f~$15bGa9@SMHa|Zh9KF|o zao1aq<6$8UXU<-GwBRHOIW7Z*lm2(T`s^;9Q>7FC#>%bhpxb9_{ZPC6_)i*h)N-hd zm)M=;H_={TsMP!PJ723XH|%B4v26N#)ddczWR;I@7;qo^v!cc;mLy0%51nC_^#-dJ z?zpQqYZh`;0Pbnvib(1>b=s00;ytn?X3IXZFW*IPbLrA0G*H}D7*=cZ0tqd1fJE{Pgr|Jrf<0RhSBOB(;foR8!sEw}6VcQ@ z?2=1>6BaW6pq9>!u45G0J1+cUueT*tsVHyjmTXD!A2@jMcT$HE^)qJQ0=F5V<+8TT zAG~@84+yM`ed$8NN7^d#>4nf3P$HJMUdQviJU?f_M3N$4=r2p6V`Hx^NqP4!Ki2kb zDfDJ!3xD6d!Ib>a?>vKFx#bIhR`>56~vb^O@j8mzd8(}0paG-!O(rIg+Sv<}QpcAVZV;^3+ovH1a zOE(W&dF<%X$hEU0jPfHb-!g}ScJ7+~39XGAHzI}XL60LM#s^q)3fI((96B^FWL{5W>qhTp1cFQsWp^Gj-A3wd z7};86Oc31gaFp?N(-FPz#0x_OiSBvz>gc*SkaMmR&B)c}F>QO;O3RkINcnST0mH~q ziMIOS=KY#@hrGP~AgOQxF-LF26b_Dfd*Y@ys~#20cgPEz!^RDgCthHT&&X)tA#f>e zzuWYb#Mab@n>xK=W9EhmCw7L8rLrGFKY$PxR3Sc+XNx#A(WX8m`TyAovbk#;8`~g} zh~yrvsle3%j6f~b&$`l+-Ij5%4(#J~;r9EwBnu(%4^Xhh@+mb8X_nQ&-q@A1rg;c+ zPk76#P#n&BtL%4+YX(IgTqtq%bgB>zTGx~fNw1!P^E8F0%!aW(-ag{V6OF_*a2yy# z>CK1F+%cy%_e;%mMyDX-Z>%ox&3a{O_hf;*{R5AzFF|KnFB){*AaRc_d!9OFWhtr6 zUK`IWN|1s*UqLK(;kKp53)mOs@Z>D=>AXYKf1X;Doa5 z+XZOFi7w?JEMJJODVzCEv0V#h1}vVRnhQFHf{rVmROMkX&I?ePDpe4$?l=f)#&o!$ z0En!Lj(!Q7UY_Kd>%K2{vg<5a+M-4&w7hBo-pOl3rND%^7m2%j3zO0T$lHdqZU+wz zzq4~K6va`o5&6p&WPJt~HHuwLS`w9o^rm^repRS*KAb)Bf~yOdx${c$0%rI%yeUF< zESWgGo_jALBXehaIh)q)JH0G;p*Yj-ZhZR~a~yt{ep}X3uPj(_-)XGNThOKAe?GRH z6=D@RD93-k7BBYU)tQkaVL|SMeSt;;>}pYKy7in$x}9@8>l+)T5rQL=? ztOkF$56%K9GhI#*dDHp_JLc{fP+r?b&b^K5wr$ST$DlmIa1CkQJAQ`_J>!te^4`M7 zatq)3T(fYnrvTzS#iUbYojTHVC^QwcQIp ziP}Ll0RVT`S`^pk1eMY9oNkfGb%Z;$Yx!-nkulUA3?N;I;yw4?+$jyz0~L}tF=9k_ z*mgEUMJdOEzg6bIUbYX!s~n(@`OT^B<=|}z+95hDUXn85ZV{X1wQ;rBX-@ok$U2-W z6+!eW%VwL=vVNbAO_%wp3B>_9{scv1zE>$QeoJ#XSQu67=+UDMSFC7BMFRaOd)-Ap zKaM?vDO7`eEelyDuB{T?A04R3NHg5LCvj7j2H4@8e=2|9g;3Cn_@ALQ1>n}eqDcF~ z4p^X5t7dXRr7SP$#MSo>1~ISMiPMN9jLD^{D@LCq+2qX80+;rdEn$X9gY^8Ak90hs z{5X8LTkDE-wadqOfsa;z)xyoR)j_}t(p6zTB%_2boj?EYfz)O`j>h@U=~HS07es@CNX^YV@@0_BdV?twEl4`CJ_H(TcGNq51x%tnD@3tp82|e zDsJA*4dMVV?M5!EGDk2(DTbC?-TcZ9BzSvp%6|ZU-NT4L+aT4TmT%YhxcbVE~|W(bIoi-jalwOo7c< ziT+m{e@-6nm2^SZa{cz~eaKoi+_py$GvE+eD)9ow#6p43@wukUjz z;g3HOvg%Kde1o3<-Y@9uJ6vX=RQVan8OO6;Iq0D%YO$IPZaa5Tj!|ka2LHuz0-bdDc=!Gs|gkmeoFc~40h zTzGgeY(F41Cv}BpD^bRgOt`QaIWh<^Tv8kRX3du`j41DAVogpdiHsK+QJ?Gya{QPo zh!)%a4E<@zVP%-3mk{(S7lMx0FDBZy#W)__r2N)IT$Av;#{qij-8ohxAKyE8u#3xK zXtFP6|7N}1Q?lzJPJQQ_arf^(L}17w$W2FnhY0b4ukQeDWDPJDaoW@7}!G zuzxALBuDN<^W%D)smB&}EB_e*v`ssHqEKpNPHRDNxa@!#oCEl=vHJw2K?-JEjWKKU2-DlSJQhOv(TT6t?yf`zLx7&dHJzL_95EKC`sH*u3I3#WJdm5cyhPmEkE&US6U_gpU<#SAyi44Xf{ zo8Ypl4Caaj4;fj%LP3h_HZM2oePk12I{e{^T2|CH=H}09j-Q!Bb>ca)tM=@Zq6^G! z&%&R@Qgw6@qZf+~CCokmiq1`QF+5-L zjGstE)MbGIJo{G&1o{Fzw!D2#*Tdkp?cLDR_wL;+XRQ5(WZgB!x8{!)JpJX-V*TgT z2Sv}ifk1`~>Z%CC_3LFMB}c#6bm!)!OT!at-td<9jz6{GPhXX)22VeA2gRVY8H`XG zbWYA4<$!<9vHOtpii_^AQuM}$b$Qh2JYg*fFW--A%M@^QznV-maTiY=No|&6v+Q;Y z<)I#$m3w4+5qzd2&X1`zka@UPhHTxSTVQrH<(ZDBq_>f4?7E8=su-vP|(+_gS6xOeOaUA#Dy%wl4>#5o)YP)t4rZ zm4%*-lQ*+TGIt-_#|w$6?J>rad_5i=I`F%3e1LI_P0H6rhaS+N&}%e@F=dQnNAZ#N zu$enXbueQoBKStjjNQ+MNG&BYtI*}FxZ%2WPcVe~7{du#;8GNQThA8X;?vajv@8<= z49M7;cSlrjjdP#BV8LxHZ%>j>51a7=o9vYgr-Mf~Z-}r*Vbh)p*(tm&));8s^nT1> z(YLQHo}KFv@w~0g>Dhu^yaw$CgnqZ{t?!1$dF|SF3*Vq?sUTYoW^50!ErVLE6x4%e zIv}KZo*qfv2II8{$N&M>AFv3;M0tJnewlC+wDK-#p^<=NJrT0Y53&vV>-pF1>J;@1}B+3esFV-8uznM$b_H7|NQc1 zz~06CDeu_h@9&W5Gi5rf|7yk?WROW z^lwisbnOW2n8pO-4lj+5_7BdAOi=LF^?ow1UTYsWrZ)U&K6-m+$1wxj(&vdjbnVbA z7~i^ZkbPD>Irh&whnNG;ratrU+(kYQrxzX%Kl$2o*lWXTk#inGOk0M5R#xp!X|tkZ znizciUL_a4f^%PR?y3O+jaCyw|7m~-SLVB_eG_^-oA{@wR#9GPT6(KPEamo1YhOk z>XY`SWLLk}FJDWG$~q1IPMhN9-J&n)#}fv~vYNCyko6(t!?(#GUZR|6Umdbc7+`>6 zqMZXbGwgKsiTCpQfs~t|nf?p9(FzK}(;z{7#W4+EOCLM__`}MhiI%)GO6x-iU`dOT zANiYNMA1OJGQsD|;aHBp4^I2jem;!X=+ZqWB>89yC|Of4-QHKMjgYPO(Ty}JIqIA+ z)v48TXSk2Mcz%>z>$5q_v#*SVHaJ{GbV-kA{l~x0jIf*7ubYU+s%1kj@Os22_petP z6ce(`*?V$}TeH;GjW;9<9i(O5NA^BU>Yqi1Q+3_fIOgkK*01&4J>5Paca-#1v0-xa z-(Wj6wA8&|qzHph4HFM?Hd0#Jq+>+Z_ZJZqz**Fk-g;5M9gKC`MePIy(68GJ>l2BV zFC;d4H_HaZ*v(#FnesMtjk$0S<5ojE?@Rf8H95ht>EuZBV_(K>pO{&2FLlPz)ZO8S zqmS2xFSOjIe|C=U^f&81UKbX((L%XizKwdK%lDs*dG{e(rf^BO=NJ;VR3AzcCziFD47-E=B-<-ES+%}GTBot)aJDR*PsUieXBhRr*ix$$r- zI#XKodeRTk6V=cAwG6c@2P(4_(j1@Msn}hdnM9X>#?igk07PLzKH9TDZP9X+aoXB$ zrGrvpFbZ#6E|V}mu1DL0q>9T^{P)f`&F*6?WECS)*SmjJEkL-zK{h#e0%uN&aGqy9 z6?6eP=+616fKz%=Vf|X2%$v;unukn1llm$v&C>m8!2ZDv+~R0CA~wa>SdM0dwX?(c zog?ZZUenes-+!M9x;*4B6Z`v6@VBkgXk>)Y&6)WWytE3dk9q{(FE}>R<+^gWB?s-6 z5<|Xj?OKr$BP6RoC%v@o)vs?~X{WSQka**ZY=DT-?rNIS(rsEUnJ{_5tDKxwB|QO- z^BO6gqKBSaxYY81y5>ZM+;h38r(brIfBib-YB~vTIf| z99Zj>wz<_=^=*Cg^78E62Qh`3hLGXWAPss`^mQ~2pKqGIvw~e0fQGVS1VtIN4uV?Z z;=c6sBgevi_wE7mnjXix8SZ_HkoUg$8J~6PwId`DCNs-&?Z?*3r6YvA<87JN{p=5P z>HT|g6~^(I3TslY-6bSgyil*rPO@s~XJP#oA~m_a?+ANg!_Xte31hPMo7Zewc&yLj zCD^O0N+s>9bh36g+A0atSUYy3E+tc-Z8$(`f=1`L{8Vd%zg?oLz>>@t6-=667kLr_ zF|;tS5Ibaa-nHOq6J0K>z5ycBwjsf-{+@N+qwVWnn`HGUEU{c?y7gpTudSe@gZg)$ zg8kNeoG_xl^#+Jvs)LH_V|+Hr0?kZSD&3&Vc&+uf z&z$M6^&%=+Ok&S@rO|%`$2z7H8oFDqKW9J!M8Tp*q8)~jqN4d(f%v3`)-Ddv@|wwxT}BYyw%(2 zXhh0$-Ou*dY(Ci0Ku)E}_Li8!moe#Iw9_TcmJoQiS0?90-3&1&Nl_^Y38{WF6s~kN zeAdnG)WPCI%jVa;aLn#@Q)~RmMRgvFvK$Rljc;Z-Iz17WlBz2bpFBsRx74{Sq6)pQ zUmD*_E>Wv=e`!qWcF_QF?U|qu?J(cnE%%Go{_YcE}YVoKXE|gCr#8 z2IlsWr9@o0diC+cA2QwTnfepmw31Aph1DSoD-GlaG@U|;hR)jecRB4zMD^up85LSV zi$fB)#v`3nwH0R1ew-JyUDo@>#wDOG%R1KG-?ZRI2Xk{mUYU{`Zas0{sj0ELZG&v` zPMGT&7|0(o1EXpRrSmf!_DQEG;_U>epiAoa@)-;hy)J#(;NHS^NKK{x$DaNN?I)|5 zFJ9t()`8K{DiyU~g!rtCEP9`89z>f``eW@U`v|ePu2jk#1>b-R7v|q-q??iKZ!yeg z=&0X`>n3tT^i30+Sujf!wk20)3)82*%rv% z$i_V9T3JzXamg)}u#~&So5%Z}&CMmqI%ay>>(}4m@FB}^x*R`s>LcRrx7|_~+S)2P z{4kd}gE4gK5<6`)#sPy6~oa$#zeVQ{J3oqZYDE zXPw94=U));2eq|Q+MLh9`%8@g&P|{r{3z;vrn81H5$DY7uXXz{RDLs_O*Qy?0DBy= zRsrb;wmcuhBOo?7kl-2wg_UB&N~r{ z>o@B${L_Bh4I2)cIkhz}FCAT_7=C`Hk!Z{xXL?Vd=QRNK?1|#qP&gSKW=QkcV6NWL z*Th*+zrg2h&$lf~nZ*MZHT?KAOR|{YJS_z>FjVfx*5kB-h*F{xV{ zRqFNE&6KR+;o)GUtsGIDwwXH{bqm1axR<ZPc=DMw%4Wm?pZ9aH=^9(?{~DImN0!+#`r(2mZEzW)$5;z+leIrpxUW|04xq@Re*QrfaiOKN;V!hSIZ`kmGcpk znJvJ=o3*S2^+uudufQw+7`rV~82&d2>fPc?%ul3S%#5lK`@2MJYV&?xSnBFuH?c-d z`whR6ke};rP|Os56jUsknzF4qrjsvix_?o1_!;$pEYjfsg5_QNv*5y1_hA?4E+V25 z^Y7i&6UQlaUux#uv~q>n;{(4Y#dw^&AvJIybLdyJU&a(xR#9>C_1Cv?w5=6q4Ww

fR6Uh{p2luc_Zd8$}{$Qr@(I0nN}b*#~3ka@ZgNkS5@U> zVh6nnxsrghNG*tl-%Is`yzkqv*oEx+f|(9imr{pPX5@fHUNFeu3nsg+#OQ3^vISkV zmn&)jcANA}F=BkOG8dt)zp59sh;$&TYe0Yf&wtYv>V3~MjYV4dfPCM~|JDLnh&Bnr zSy1Ce?^lUyvqeO=ztpujC>kQr$uZxeX{(a9^~gMZb}9RNX2iO4HyUPCY$wrJ)-?`~ zx}e_haSUJHu=18diKOHb7881T(U>(uWgA)kNZhk8KD{~~sN8?b#;%vA96GBTM)ffi z^u?jQv!?9QMbjb3HdIc#tT^m#g!P%RhU3q?&R8WbQ_8fE`huht0|(Y`Pc+@m!I4?e zmm^+T%f#F~ls4JQNL4<4;#ae$v}L9{GiVf?b7X>DIDeBqR-&>+lDJEI%Wl~CY*F09(^2~d&uoQY3THd zXgvAdD=!J!2?P@8khWG-X0GWfp^YKJ`{BKSlZ> z$6NTd;kzmt8X7>eCrq2N>HbV2B{7M-vu?l8+Ie^k7&J(gJ&WEYe}SyGE?o=ygpwaW z^tbLUps1yQ=GC}vcXIv}HlSp?Ud(_03O{PSc(80Hx_{_&Jgr2Fxc?*`_%1Zkd%~<9 zrHN|;cToCc#n`kyN(s(h(q7kf9%xIs`adnY)H@-#1IAYy%Ktjsy1I{lxwTW=px zll5*Jeeicg+fh{$moO`B$rJOpX?tKb!~oR9P%#{Ru$}CQB+CAxcCcD;?)<3f-hOel zL)YVXL$&|`5A!I*54EdswM>6hcIG-!dzPD?og0|JK zGsCiKO;soejD39K)as7xzHrwe4PB7>pZZjMk z8MIP`<9K(D-EuQryLM^m%h2MweZ1Tx?E*g|B6)Z1Saxt&SQ95H=j4FNMp!kojrPi` zk^m;;2BoF#=xBFdkQy2oxQ-JxvANiT8v{ph?b-!agyf=m*p^^vXIIDynw-#F3``C6X6d!6tg;dsE{EA5&%aQ(<4w7c zVtHkLk2hcIz};xIp+8_?^5SBnHvU!daY4Y8sskq8P<0)%Z}w;Sb#hqfB}|tuKj-B& zCMrf>%_iaGz_7L2=abNDNFCvN-eGpeP+4)Y$0a|7U#9i@4;+Zw`b#Uz``b4h^0RQC z&%L$}+vm95$^Ugc7-?%%?+bDbl?&dOq0lS$Y@R~iQ5s_ofJF-xh;)Q0j|iVTl#OW} zw=r{UEU%(LVE7|9pv}`Tq z|DHrf3xr=)tv#bl+Y*9WH*vps)A=(SvD-5^?IZ@wZsvt%A65Z4p zEr7jUdQPZZmmpQ>j|zWz#t)VNj1|buMz@|s%Js0Ay;m<^Ue7x53s|slp#V?b9()Qx z%0$!HQxgx~ft!MP*}QpS!7Z+iZEH&SUxcMO)A@a$PhDzjSPlcQ9{DWYg2c5$kdvyNZ87o`HCzySwKxDzZzKg5A zKy^w`H0T#e3I8OzuuGeE4}~j_j5L&!q$&{ne{_lUc2>}*QxN)+P=@Fa-(@g2i4RLX z$V*2R3w-~XyS(y|vEd5l7?a^b2|)@T??(`v8Rk-9h!edAy8~&pTsF3ToZ{l~~~rq2&l`5(&we=oDQ^#Axw`1Ah{zdpivwoEF?WTQrH zV2lD{pIx!^5X-5^NlvDl&v*MZ^Z^_Q6*~KM?zYElcPJu|sd3_=R{8u{CMcBqH=(Y{ zRg7F*6iZBwfnSMrSp9TM34kE994Z;x5#ni_*pJwFEG;acFez9j#CcKnPBn=D(V#}IyUTfAZ4>5?|RBO;}?3=`sn@xKb z75>Yf3vI%OD5=}m90-2FE6<97EdENCN^~_xI*wTaLNhW}>|L#8N&PrnES&Gyrn)}b z>Ktdn-+91@`Ud_{;*L0-MoTF5=ZBUq5fhqcnc2e!j&|7b^t(A51I6vsDO0Q}4|ds) z;)&`(KY3hOs&8oMmUUvO zhho|a!x0=jP>;gw*B`&9O!9sEy#dWP4)4##8(U`_`15U`RQ^NEQagmq@BzNlZp334CCC#+KIA`RxPXCImItp zJ|0bVc6LbfA|1|0U0s_>CdcG=xs#IsENmk8>^u9tL?RumcEM4RF12cu_B>20;k%xG z?;<_c)c5vnTLxCuRzeFZ7YrvZw8cpnz~d=SvK6XKuZJUf8nkg-8F%R=F5j2M*IYhu z<$P~`emswocN@`=c<&>6w(q{yIXOEMgUb*qVd5Q`Gn6oyuSkRi((aVKmr>|5M*;lQ z+Qu9;A~GL_RPe&!(j&uPHD;_gAOO}?W^dWfjsb#Zt0oAr8YShByMr4+G}wvLehTju zIVcpg=n~dH+$D^VkM7585y}N|ZQ2i7+n?i4BtcGbE^IFFXliU^{)+(L^1krFh!;~m zwzP!75Xjp!gF3jsLTFWZc!p|PP7a9?3fg7xcMwEE^rEIS7r-usB-LVxW>8I4)hTi2 z8*ElpA#5B8Y){z>moJ|-xI$&gAqaqm9{lq)ZrQ&0`?Pej?!xpiZ0`N~c>>=|S5-Z~ z?#mPa1cA~Zl^Ai&_3Jw28_bDwV5|#?PvC44XI_JIe8kL*dsk+}2tEBPbWpfwqM~;5 zvf0~5U%EfdNwe_v>(`8uOi0kgVFOgbz2D^`A*;fy1{Bt!NB(7ngGQa4KRS|Q)y0}R zn-MSx%%xZ?=DF<}$xA5yD=HMv>G0BxYMA)u>Unc|NMSZD!k1|uifj3m!bosUka)6(Xr)DUTDF=-W1S$o2LOwNybJz<*pvtDG`{RApaU~mc!*MPo$ zdaCK$#Gba7i3-JS|Nfj4G$0gh70aY|ZDhX8DE9|zCu!cM6={|@lD=H7=lgGderk-X zI~YD~OZ%0j;7@yZ?XCPY<|2}=zdX?b5JR}dibkxc?RSm zyf`kw`4n9)cHw55f<*slcP6>aLYssz3}x*>lN-`QhV&h#+V@QT5>Di$OD(c{<@p{| znfaNb9K!^WnSNnf{aSBKY_&4FZlgG0@e?`)D$_)={8r?R_kGK7kRhtuF7oPipeW{&dK4U%v~1@;NlQ)fCw{N>AOJPz{gYe|tX4w)+@%x$yU*KO=s(SXnx(vvl}$d)5g(+l&us*V~*K zBl783vb2WtytdN&g)XnnhEGke&THt}Cf(tD>&B6$adyDQ> zc}Yqe*M*#nb#|G%(eA*a(pUcTS`~CHP+xFhu+MczZ;=Zr@y3X@Bk7Gaf zeLqZEjGlKNSzKeU@|QTY+uLlkwaCLre`KV;)5h`mo95SKas&UY4-ZMzEnlH8(det* zy~DR}O4?r7YxIJaEk6HcL|xN*pYy`uMfb(b+U~r)bKi85atDJg&z!Td4vn7UKE(C$ z3FTuuvG*5g*DRNVdhQFFB-(m&_X{pNigaD|Xoz(#IBqs9c}T4AkzJ965zm_C+X~<9 z%#Ys}1y|7Gdy-!+z3P0#>#E9v*GLN|N6*Uy<)6{*Ih9paCoir{&Fw9&7jvea91tg? zX1v?Rz4pzlmix1eQRV4?p~msD+VWpkX~CXPr~6`yha)?jyenPi=DIhxuX^MDR9$c` zpI_pyHc+CXl`2gg(Qan1WTIE1Jon0vugf)MEh#r)9k+LU{&H{BpzaHAD-{vT{yOh} zOj_7KGf8^*l-AU|Jo71KQzX-|wSik_teRKvS7oI?$#Gx%s5l;b+DK_q`t0M)B`co8 z6`KQoY&qo@9O2rIE8twW{}E}hR@GWs-IUNWlhL=TtL45@%NyONpD!2@{aMD?|D5;9 zXA+z1RN`Jt9sA{+=()N~wRif=Aq!8X<*%*7{LP}?oJ(%Y)LRM;=vlB&&^7!+r(pVa z)ySB>I?+~J_ov&JM~N;QO{Be}(+YnY`8ue{D2pFDEOplP-nx?K3Z3_rf>D=|#D2L2 zU9C&)9WraYV&m2~n<&Toa63=C2i4_nXIhdib(EdS${iIv;yEul;VA8He1iW>`sROZ zb!;f~IN5y6i*Ca>c8&JHhEDGhiTMe?jq{?143s&hddpQTC?ve6^OF2{M}yn1-43Mb zE(@3Y+%ov{>@8)Zh;lPaSL#Ir7Dg^_>8VEP=4}s7Ez5>UUgd1$mrdVgC=NyL9_cp;x@$N7F6O{L4GFP++=qI5D-NV_UKq~I z`<@)?*-?;DefS&6N|vwcv_Q74r2!U;5BuFH&C~ZB!(EMawO!gh)an;6z0B0n_!#lr zR`kGIY0VEdYv-0#mbdqNTV;?EYm;SINy`QmKMg8|??%=r7%JI}hfnB!EEryScD77u zl~+IX()@hleIu3;t0i5n@|p6E_EpFHF@NbYdtMQbzLQ<^(R$wVdEb(M(koG0UvCP@ zyBpjd*wm-v7Bm~i!u{sM-N=$tW>;f$Q} z?%x1Ma$z5}Up|Z#I2EH*#Sz9a&2|5F6>`D*dueEBV6Wvay?_7yBS&^in)(S}(_sm?R2+C|SzH)Kv5=h?!=yyO67Rug>WR-dChLhprXg z^_->Uo%Pj)>Ez~9>^hT>sG*;B!z4h4ZRU$JtR&F05UFlzpSf_ELh2|V5^9v`U7tS> zdc#dj>Kbz}(HKOB)JGLWz`2MWI5}**G?8PWO>FpT=nk?|B+*KrKVfz*T=An1Z{757 z)YbT+6*^&!!cV@~c*sm$9Wm0Q!gE=S`Tl`Og@&u&LApb; ztlxN>(s7-O45!X2$*SeocN<{VIn@L^l3J#%$QG53ClN&Y=u12>&N0JTDpIV&W`tpb zIN)zwOYxAB1_Q)(-@#`BX7qtHzIlbv3V_zp+ADhK5bi}xbC_>xMTOzWa{J^~iVn`9 zWt6m-5`MzH?e*&s)K3NCdd4D3b3v^A#f62Dr7X6#6UcG~b2vqD8e%k4^UuB)joay$ zU7m~Cd@?mNtM!n^u;#A&e$Y0xBj0~8mCyT+yeUrqx_gB2$3tmvFA$!ZALc)42S(@Zc;%&eY9@=-_`iU7{5u6yQnL{l>|_CVY6__1uyq2Rh>m`$^XZU4??{ew-% zWTMjim105%q0Ol~s4{;U$N}Jly?X<)eA{nPfH>9Tm@lAVb}c7uaxtIxt47{RbA@nml!71*x@uSg4FW)I2>ATZd>tu;jEwe?>fgVg20X8@ zDHh3cz{`G{t^$m1ZtU%iH#`aPHF+XPLl|cW1A=VbXaCj}g@*1Zq_PA)1+AG3xxY*j z)F+)?UDQlRexQ6>XhV?dkJ94xfC$t@;LU}Y0eL8z!2#bWps+q7>5x87CyXw~Kw&+O4D8uqNG861CE&NX z5$HOqmM4$p9bC4NNo2ad`W_WTf0HCM+|A7pRoj6khI2xe{K}EI^_5X+@4-T2?q|sDg;!}Gh$V~YiqmE z_JkOwgL+B5_Kb|o7rL8Sn<(~i?e&l{5nw>SYhS`UuuQ&0jD7to=fIIt&&f_hj`GHP zc|v?;3Jr!U3+Nd5(co;o3ov(CUQrQF0|c?8xcC>^Ogl(S)WpDDv#;Vf7tylE1IH#q zN6)|MWcxs4FzxgSD9DX@=26M@{kxtWn_#&68Ix-dx`mtPV1IDzARPIyxf?^q4DuDRIe*b80?AX zi!Y86@AWD2!h!Z6T7R&tlm4QOF4BbVjdghD zuGyFuX?t1Jz6r9YmlsjY#E2R7*vaQ;9LLJS|n}o8P^-9^` z){SllHim|#IQ*s|QF&WPLqc!}ElmL72qYs!Iml74-3IHPc}RJ~YS`?MZ;mB;FED(E z*vb>P1CJ7P8BeTPlAMM{cx~+2@0VT)Ows7Yr&_e#^FY=Cuks&1eh42t7=7GbEXV!F zq6az+C27gi zuW+tj{+7Ow6@*HxE`(%2Mt}!#+e_LB>qJ*-fF5_tKSPle*ZegO))bgvh7KB#H+8Si zpFaJZ>SJLA`S&oKy0I^T&S1Wv8SaWp?;d=Xp`Mij;2gn%E!0eMy(^Hc(U4L$vF)MI zdxG5+R+@!O3rU@1r=E?CfP_c1CkwfOfx(KIfdE5!X(@R66fL)R($S$A$XY>Fm5>(p zdz=9-5UC}cS+Vuev0q?^>RCeCkA`B~w%U$1)Y9JG>+qriCI(93jT6_i_Q4(jIcTb9 zR#lZ3xP|B}M#*uog`$5-zKfNK+OPSXg4=}yMr9F8J=d>qSUC^Ca^~f2Ob8+5GT=kO z2M?2W9!;3xl*hhCLmnM5D37M+=3c#;02ASXFGZ}WhHY;J;kAa;40U({vH2i3%QvmAqBY87$BJTXkET#?G>)KA5@i2hx;Jhq(@z!x!bivuXmp+h@Wh8s>R z1{txYC=|mK)T8o_OcFNYBxG7xW{_2KW-a^6u)&c80UJ$g;6adshbYj`)hqx7zLJO5 zl>r_ z5q^dM1a+a;(HAk{3xF7eUx<6dXGOcaz-mMsyF=6Z;lu0jn>$=gZ|DkC!8~*2VaTKy z@}F(nx99$LZT}1|pN8!Rg|sXv$8nHlz|1`}6KubiXc)RI!~UW1@}&zV^?Y=!6y}%A zd}<*Hgck*vIv^GyvjFLg>mnDIFOTMZ(+gnn;2yld&}(aJ4Y3iy%d6sx7Lq0TEX{0?S-%VtgJk z++`MN0s6*x!73S1l|JAVKrbl8s*(JzG0a)Sn`-U8d$TuwX+Wt#&HIU+7tVq+Y(!N=m{nXV5b@^A!&jB*uL@^j@_a1#z@|?{~hq&vVdk0(R&J0 z3bV;L^)}ru$PL_cXiN1cXk5SncN!#e71|xYl52ll_eHt^xL8e`fx;JsS6#0Bc3Y8J z4CQ5%)~Q7S2wQN}M6)1O4miu*zX5-W#ImxOvQaQd8LA&ev555h?uQ;p{v_J&rSQvt z8-sg)uaA3Uc*9PyBp~QGM%$h7K*M~de)QB?cOb)xK1FiMupx$4!Lu?2e4}qxa{d z$Xj7b=`=_*i}pH1^WG30xPYXzWbw9`OE$0Bv=4Gvb#96h5Q_1sSH_wwqz_13lMOvY z%JHup>hg%Ik;k3oY zO@*wL^ywR;(2oI7s(Lk_eGlTsfeakLFQ3prm{(T-#arZ+6E`gOZ zv(aC7SDpa7%zK+R?d^1|ng#}nmo~f1j!+d28YuEOK6nE{IdiGOOLS80Bd^yDh8pi~ zq>nk9;&WbXSD3-c=*?{?mMkx4rp%mrdXJ0^Y}q2a?WC_rc8_dKJ0MHCo!a<)^lj=U zj_Il4VcD#`pqI@ds6znf0dHm77MsjG3R(8$Oe+oh@$9Uu%}O(4jg(3*g157qAnlBFvm+tlq}ah( z@Kh?pQ7KlTH03j06urbv*X8Rp`pBelyr3s&Ny!3o$>1)IgFC?roeUaC}G$24wkmmZY;5c zbHIUFgXYLCxvlNr_wQ4WzVM+zE{*%fi4$3o1Lq!Sruc?(6yZ!oQ3L~as1tJVe@d

=^tmv-)G)4s}u`s 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%0As;a7s%MrV& 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 literal 0 HcmV?d00001 diff --git a/docs/faq.md b/docs/faq.md index 624e3a4b935..2fd5f6ffb8a 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -15,6 +15,7 @@ This page answers frequently asked questions about Scorecard, including its purp - [Pinned-Dependencies: Will Scorecard detect unpinned dependencies in tests with Dockerfiles?](#pinned-dependencies-will-scorecard-detect-unpinned-dependencies-in-tests-with-dockerfiles) - [Pinned-Dependencies: Can I use version pinning instead of hash pinning?](#pinned-dependencies-can-i-use-version-pinning-instead-of-hash-pinning) - [Signed-Releases: Why sign releases?](#signed-releases-why-sign-releases) + - [Branch-Protection: How to setup a 10/10 branch protection on GitHub?](#branch-protection-how-to-setup-a-1010-branch-protection-on-github) --- @@ -89,3 +90,28 @@ Currently, the main benefit of [signed releases](checks.md#signed-releases) is t However, there are already moves to make it even more relevant. For example, the OpenSSF is working on [implementing signature verification for NPM packages](https://github.blog/2022-08-08-new-request-for-comments-on-improving-npm-security-with-sigstore-is-now-open/) which would allow a consumer to automatically verify if the package they are downloading was generated through a reliable builder and if it is correctly signed. Signing releases already has some relevance and it will soon offer even more security benefits for both consumers and maintainers. + +### Branch-Protection: How to setup a 10/10 branch protection on GitHub? + +To get a 10/10 score for Branch-Protection check using a non-admin token, you should have the following settings for your branches: + +![GitHub's branch protection settings with the following options selected: "Require a pull request before merging", "Require approvals" with 1 approver, "Require review from Code Owners", "Require status checks to pass before merging", "Require branches to be up to date before merging", and have at least one Status Check chosen. All other options are unchecked.](/docs/design/images/branch-protection-settings-non-admin-token.png) + +When using an admin token, Scorecard can verify if a few other important settings are ensured: + +![GitHub's branch protection settings with the following options selected: "Require a pull request before merging", "Require approvals" with 2 approvers, "Dismiss stale pull request approvals when new commits are pushed", "Require review from Code Owners", "Require approval of the most recent reviewable push", "Require status checks to pass before merging", "Require branches to be up to date before merging", have at least one Status Check chosen, and "Do not allow bypassing the above settings". All other options are unchecked.](/docs/design/images/branch-protection-settings-admin-token.png) + +It's important to reiterate that Branch-Protection score is Tier-based. If a setting from Tier 1 is not satisfied, it does not matter that all other settings are met, the score will be truncated up the Tier's maximum. In this case, 3/10. The following table shows the relation between branch protection settings on GitHub and the score Tier: + +| Name | Status | Required only for admin token | Tier | +| -------------------------------------------------------------------------------------------------------- | ------------------------------- | ----------------------------- | ---- | +| Allow force pushes | Disabled | - | 1 | +| Allow deletions | Disabled | - | 1 | +| Do not allow bypassing the above settings | Enabled | Yes | 1 | +| Require a pull request before merging > Require Approvals | Enabled with at least 1 | - | 2 | +| Require status checks to pass before merging > Require branches to be up to date before merging | Enabled | Yes | 2 | +| Require a pull request before merging > Require approval of the most recent reviewable push | Enabled | Yes | 2 | +| Require status checks to pass before merging > Status Checks | At least 1 | - | 3 | +| Require a pull request before merging > Require Approvals | Enabled with at least 2 | - | 4 | +| Require a pull request before merging > Require review from Code Owners | Enabled and has CODEOWNERS file | - | 4 | +| Require a pull request before merging > Dismiss stale pull request approvals when new commits are pushed | Enabled | Yes | 5 | From 65fe692e6d42039260d0d9df5482f9452f5cf9f4 Mon Sep 17 00:00:00 2001 From: Spencer Schrock Date: Fri, 7 Jul 2023 16:03:29 -0400 Subject: [PATCH 048/125] :seedling: Linter workflow cleanup (#3247) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix linter timeout by renaming deprecated deadline. Signed-off-by: Spencer Schrock * Disable depguard linter. As of golangci-lint v3.5.0, the depguard linter is complaining. We don't use a .depguard.yml file, so just disabling the linter. Signed-off-by: Spencer Schrock * Move linter into own workflow. Signed-off-by: Spencer Schrock * Fix bash command substitution. Signed-off-by: Spencer Schrock * Add harden runner. Signed-off-by: Spencer Schrock * switch names to existing linter job Signed-off-by: Spencer Schrock * Update golangci-lint to v1.53.3 Signed-off-by: Spencer Schrock --------- Signed-off-by: Spencer Schrock Signed-off-by: André Backman --- .github/workflows/lint.yml | 34 +++++++++++++ .github/workflows/main.yml | 30 ----------- .golangci.yml | 3 +- tools/go.mod | 51 ++++++++++--------- tools/go.sum | 100 +++++++++++++++++++++---------------- 5 files changed, 120 insertions(+), 98 deletions(-) create mode 100644 .github/workflows/lint.yml diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 00000000000..67909dbc37e --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,34 @@ +name: golangci-lint +on: + push: + branches: + - main + pull_request: + branches: + - main + +permissions: + contents: read + pull-requests: read # Use with `only-new-issues` option. + +jobs: + golangci: + name: check-linter + runs-on: ubuntu-latest + steps: + - uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1 + with: + egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 + with: + go-version-file: 'go.mod' + cache: false # golangci-lint maintains its own cache + - name: set golangci-lint version # keep in sync with tools/go.mod + run: | + echo "GOLANGCI_LINT_VERSION=$(cd tools; go list -m -f '{{ .Version }}' github.com/golangci/golangci-lint)" >> "$GITHUB_ENV" + - name: golangci-lint + uses: golangci/golangci-lint-action@639cd343e1d3b897ff35927a75193d57cfcba299 # v3.6.0 + with: + version: ${{ env.GOLANGCI_LINT_VERSION }} + only-new-issues: true diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index cef4ac8c8f6..72a97577a71 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -744,36 +744,6 @@ jobs: command: | go env -w GOFLAGS=-mod=mod make build-update-script - check-linter: - name: check-linter - runs-on: ubuntu-latest - permissions: - contents: read - steps: - - name: Harden Runner - uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v1 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - name: Install Protoc - uses: arduino/setup-protoc@149f6c87b92550901b26acd1632e11c3662e381f # v1.3.0 - with: - version: ${{ env.PROTOC_VERSION }} - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Clone the code - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v2.3.4 - with: - fetch-depth: 0 - - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v2.2.0 - with: - go-version: ${{ env.GO_VERSION }} - check-latest: true - cache: true - - name: Run build - run: | - go env -w GOFLAGS=-mod=mod - make check-linter validate-docs: name: validate-docs runs-on: ubuntu-latest diff --git a/.golangci.yml b/.golangci.yml index 80a62880379..3f7d7108bd1 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,7 +1,7 @@ --- run: concurrency: 6 - deadline: 5m + timeout: 5m issues: # Maximum issues count per one linter. # Set to 0 to disable. @@ -24,7 +24,6 @@ linters: disable-all: true enable: - asciicheck - - depguard - dogsled - errcheck - errorlint diff --git a/tools/go.mod b/tools/go.mod index 00e19ef35c3..f710ac61dce 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -4,7 +4,7 @@ go 1.19 require ( github.com/golang/mock v1.6.0 - github.com/golangci/golangci-lint v1.52.2 + github.com/golangci/golangci-lint v1.53.3 github.com/google/addlicense v1.1.1 github.com/google/ko v0.14.1 github.com/goreleaser/goreleaser v1.19.1 @@ -23,10 +23,11 @@ require ( cloud.google.com/go/kms v1.12.0 // indirect cloud.google.com/go/storage v1.30.1 // indirect code.gitea.io/sdk/gitea v0.15.1 // indirect + github.com/4meepo/tagalign v1.2.2 // indirect github.com/Abirdcfly/dupword v0.0.11 // indirect github.com/AlekSi/pointer v1.2.0 // indirect - github.com/Antonboom/errname v0.1.9 // indirect - github.com/Antonboom/nilnil v0.1.3 // indirect + github.com/Antonboom/errname v0.1.10 // indirect + github.com/Antonboom/nilnil v0.1.5 // indirect github.com/Azure/azure-sdk-for-go v68.0.0+incompatible // indirect github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 // indirect @@ -44,7 +45,7 @@ require ( github.com/Azure/go-autorest/logger v0.2.1 // indirect github.com/Azure/go-autorest/tracing v0.6.0 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 // indirect - github.com/BurntSushi/toml v1.2.1 // indirect + github.com/BurntSushi/toml v1.3.2 // indirect github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect @@ -52,14 +53,15 @@ require ( github.com/Masterminds/semver/v3 v3.2.1 // indirect github.com/Masterminds/sprig/v3 v3.2.3 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect - github.com/OpenPeeDeeP/depguard v1.1.1 // indirect + github.com/OpenPeeDeeP/depguard/v2 v2.1.0 // indirect github.com/ProtonMail/go-crypto v0.0.0-20230626094100-7e9e0395ebec // indirect github.com/acomagu/bufpipe v1.0.4 // indirect github.com/alessio/shellescape v1.4.1 // indirect + github.com/alexkohler/nakedret/v2 v2.0.2 // indirect github.com/alexkohler/prealloc v1.0.0 // indirect github.com/alingse/asasalint v0.0.11 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect - github.com/ashanbrown/forbidigo v1.5.1 // indirect + github.com/ashanbrown/forbidigo v1.5.3 // indirect github.com/ashanbrown/makezero v1.1.1 // indirect github.com/atc0005/go-teams-notify/v2 v2.7.1 // indirect github.com/aws/aws-sdk-go v1.44.284 // indirect @@ -88,14 +90,15 @@ require ( github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.0.0-20220802171026-617dc7abb2ea // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bkielbasa/cyclop v1.2.0 // indirect + github.com/bkielbasa/cyclop v1.2.1 // indirect github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb // indirect github.com/blizzy78/varnamelen v0.8.0 // indirect github.com/bmatcuk/doublestar/v4 v4.2.0 // indirect github.com/bombsimon/wsl/v3 v3.4.0 // indirect github.com/breml/bidichk v0.2.4 // indirect github.com/breml/errchkjson v0.3.1 // indirect - github.com/butuzov/ireturn v0.1.1 // indirect + github.com/butuzov/ireturn v0.2.0 // indirect + github.com/butuzov/mirror v1.1.0 // indirect github.com/caarlos0/ctrlc v1.2.0 // indirect github.com/caarlos0/env/v9 v9.0.0 // indirect github.com/caarlos0/go-reddit/v3 v3.0.1 // indirect @@ -141,7 +144,7 @@ require ( github.com/firefart/nonamedreturns v1.0.4 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/fzipp/gocyclo v0.6.0 // indirect - github.com/go-critic/go-critic v0.7.0 // indirect + github.com/go-critic/go-critic v0.8.1 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.4.1 // indirect github.com/go-git/go-git/v5 v5.7.0 // indirect @@ -192,7 +195,7 @@ require ( github.com/google/wire v0.5.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect github.com/googleapis/gax-go/v2 v2.11.0 // indirect - github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28 // indirect + github.com/gordonklaus/ineffassign v0.0.0-20230610083614-0e73809eb601 // indirect github.com/goreleaser/chglog v0.5.0 // indirect github.com/goreleaser/fileglob v1.3.0 // indirect github.com/goreleaser/nfpm/v2 v2.31.0 // indirect @@ -220,7 +223,6 @@ require ( github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/julz/importas v0.1.0 // indirect - github.com/junk1tm/musttag v0.5.0 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/kisielk/errcheck v1.6.3 // indirect github.com/kisielk/gotool v1.0.0 // indirect @@ -228,11 +230,11 @@ require ( github.com/klauspost/compress v1.16.6 // indirect github.com/klauspost/pgzip v1.2.6 // indirect github.com/kulti/thelper v0.6.3 // indirect - github.com/kunwardeep/paralleltest v1.0.6 // indirect + github.com/kunwardeep/paralleltest v1.0.7 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/kyoh86/exportloopref v0.1.11 // indirect github.com/ldez/gomoddirectives v0.2.3 // indirect - github.com/ldez/tagliatelle v0.4.0 // indirect + github.com/ldez/tagliatelle v0.5.0 // indirect github.com/leonklingele/grouper v1.1.1 // indirect github.com/letsencrypt/boulder v0.0.0-20221109233200-85aa52084eaf // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect @@ -248,7 +250,7 @@ require ( github.com/mattn/go-runewidth v0.0.14 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/mbilski/exhaustivestruct v1.2.0 // indirect - github.com/mgechev/revive v1.3.1 // indirect + github.com/mgechev/revive v1.3.2 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect @@ -262,9 +264,9 @@ require ( github.com/muesli/termenv v0.15.2 // indirect github.com/nakabonne/nestif v0.3.1 // indirect github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 // indirect - github.com/nishanths/exhaustive v0.9.5 // indirect + github.com/nishanths/exhaustive v0.11.0 // indirect github.com/nishanths/predeclared v0.2.2 // indirect - github.com/nunnatsa/ginkgolinter v0.9.0 // indirect + github.com/nunnatsa/ginkgolinter v0.12.1 // indirect github.com/oklog/ulid v1.3.1 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect @@ -275,7 +277,7 @@ require ( github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/polyfloyd/go-errorlint v1.4.0 // indirect + github.com/polyfloyd/go-errorlint v1.4.2 // indirect github.com/prometheus/client_golang v1.15.1 // indirect github.com/prometheus/client_model v0.4.0 // indirect github.com/prometheus/common v0.42.0 // indirect @@ -292,15 +294,15 @@ require ( github.com/sasha-s/go-csync v0.0.0-20210812194225-61421b77c44b // indirect github.com/sashamelentyev/interfacebloat v1.1.0 // indirect github.com/sashamelentyev/usestdlibvars v1.23.0 // indirect - github.com/securego/gosec/v2 v2.15.0 // indirect + github.com/securego/gosec/v2 v2.16.0 // indirect github.com/sergi/go-diff v1.2.0 // indirect github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect github.com/shopspring/decimal v1.2.0 // indirect github.com/sigstore/cosign/v2 v2.0.3-0.20230523133326-0544abd8fc8a // indirect github.com/sigstore/rekor v1.2.0 // indirect github.com/sigstore/sigstore v1.6.4 // indirect - github.com/sirupsen/logrus v1.9.0 // indirect - github.com/sivchari/containedctx v1.0.2 // indirect + github.com/sirupsen/logrus v1.9.3 // indirect + github.com/sivchari/containedctx v1.0.3 // indirect github.com/sivchari/nosnakecase v1.7.0 // indirect github.com/sivchari/tenv v1.7.1 // indirect github.com/skeema/knownhosts v1.1.1 // indirect @@ -323,7 +325,7 @@ require ( github.com/technoweenie/multipartstreamer v1.0.1 // indirect github.com/tetafro/godot v1.4.11 // indirect github.com/theupdateframework/go-tuf v0.5.2 // indirect - github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e // indirect + github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 // indirect github.com/timonwong/loggercheck v0.9.4 // indirect github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 // indirect github.com/tomarrell/wrapcheck/v2 v2.8.1 // indirect @@ -337,19 +339,22 @@ require ( github.com/withfig/autocomplete-tools/integrations/cobra v1.2.1 // indirect github.com/xanzy/go-gitlab v0.86.0 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect + github.com/xen0n/gosmopolitan v1.2.1 // indirect github.com/yagipy/maintidx v1.0.0 // indirect github.com/yeya24/promlinter v0.2.0 // indirect + github.com/ykadowak/zerologlint v0.1.2 // indirect gitlab.com/bosi/decorder v0.2.3 // indirect gitlab.com/digitalxero/go-conventional-commit v1.0.7 // indirect go.mongodb.org/mongo-driver v1.11.3 // indirect go.opencensus.io v0.24.0 // indirect + go.tmz.dev/musttag v0.7.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/automaxprocs v1.5.2 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.24.0 // indirect gocloud.dev v0.30.0 // indirect golang.org/x/crypto v0.10.0 // indirect - golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect + golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea // indirect golang.org/x/exp/typeparams v0.0.0-20230224173230-c95f2b4c22f2 // indirect golang.org/x/mod v0.11.0 // indirect golang.org/x/net v0.11.0 // indirect @@ -379,7 +384,7 @@ require ( k8s.io/apimachinery v0.27.3 // indirect k8s.io/klog/v2 v2.100.1 // indirect k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 // indirect - mvdan.cc/gofumpt v0.4.0 // indirect + mvdan.cc/gofumpt v0.5.0 // indirect mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed // indirect mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b // indirect mvdan.cc/unparam v0.0.0-20221223090309-7455f1af531d // indirect diff --git a/tools/go.sum b/tools/go.sum index df5239266ec..42050d49f93 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -634,15 +634,17 @@ contrib.go.opencensus.io/integrations/ocsql v0.1.7/go.mod h1:8DsSdjz3F+APR+0z0Wk dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= +github.com/4meepo/tagalign v1.2.2 h1:kQeUTkFTaBRtd/7jm8OKJl9iHk0gAO+TDFPHGSna0aw= +github.com/4meepo/tagalign v1.2.2/go.mod h1:Q9c1rYMZJc9dPRkbQPpcBNCLEmY2njbAsXhQOZFE2dE= github.com/Abirdcfly/dupword v0.0.11 h1:z6v8rMETchZXUIuHxYNmlUAuKuB21PeaSymTed16wgU= github.com/Abirdcfly/dupword v0.0.11/go.mod h1:wH8mVGuf3CP5fsBTkfWwwwKTjDnVVCxtU8d8rgeVYXA= github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= github.com/AlekSi/pointer v1.2.0 h1:glcy/gc4h8HnG2Z3ZECSzZ1IX1x2JxRVuDzaJwQE0+w= github.com/AlekSi/pointer v1.2.0/go.mod h1:gZGfd3dpW4vEc/UlyfKKi1roIqcCgwOIvb0tSNSBle0= -github.com/Antonboom/errname v0.1.9 h1:BZDX4r3l4TBZxZ2o2LNrlGxSHran4d1u4veZdoORTT4= -github.com/Antonboom/errname v0.1.9/go.mod h1:nLTcJzevREuAsgTbG85UsuiWpMpAqbKD1HNZ29OzE58= -github.com/Antonboom/nilnil v0.1.3 h1:6RTbx3d2mcEu3Zwq9TowQpQMVpP75zugwOtqY1RTtcE= -github.com/Antonboom/nilnil v0.1.3/go.mod h1:iOov/7gRcXkeEU+EMGpBu2ORih3iyVEiWjeste1SJm8= +github.com/Antonboom/errname v0.1.10 h1:RZ7cYo/GuZqjr1nuJLNe8ZH+a+Jd9DaZzttWzak9Bls= +github.com/Antonboom/errname v0.1.10/go.mod h1:xLeiCIrvVNpUtsN0wxAh05bNIZpqE22/qDMnTBTttiA= +github.com/Antonboom/nilnil v0.1.5 h1:X2JAdEVcbPaOom2TUa1FxZ3uyuUlex0XMLGYMemu6l0= +github.com/Antonboom/nilnil v0.1.5/go.mod h1:I24toVuBKhfP5teihGWctrRiPbRKHwZIFOvc6v3HZXk= github.com/Azure/azure-amqp-common-go/v3 v3.2.3/go.mod h1:7rPmbSfszeovxGfc5fSAXE4ehlXQZHpMja2OtxC2Tas= github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v63.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= @@ -725,8 +727,9 @@ github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 h1:OBhqkivkhkM github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.0.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= -github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= +github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= @@ -779,8 +782,8 @@ github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb0 github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/OpenPeeDeeP/depguard v1.1.1 h1:TSUznLjvp/4IUP+OQ0t/4jF4QUyxIcVX8YnghZdunyA= -github.com/OpenPeeDeeP/depguard v1.1.1/go.mod h1:JtAMzWkmFEzDPyAd+W0NHl1lvpQKTvT9jnRVsohBKpc= +github.com/OpenPeeDeeP/depguard/v2 v2.1.0 h1:aQl70G173h/GZYhWf36aE5H0KaujXfVMnn/f1kSDVYY= +github.com/OpenPeeDeeP/depguard/v2 v2.1.0/go.mod h1:PUBgk35fX4i7JDmwzlJwJ+GMe6NfO1723wmJMgPThNQ= github.com/ProtonMail/go-crypto v0.0.0-20230626094100-7e9e0395ebec h1:vV3RryLxt42+ZIVOFbYJCH1jsZNTNmj2NYru5zfx+4E= github.com/ProtonMail/go-crypto v0.0.0-20230626094100-7e9e0395ebec/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f h1:tCbYj7/299ekTTXpdwKYF8eBlsYsDVoggDAuAjoK66k= @@ -812,6 +815,8 @@ github.com/alessio/shellescape v1.4.1 h1:V7yhSDDn8LP4lc4jS8pFkt0zCnzVJlG5JXy9BVK github.com/alessio/shellescape v1.4.1/go.mod h1:PZAiSCk0LJaZkiCSkPv8qIobYglO3FPpyFjDCtHLS30= github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= github.com/alexflint/go-filemutex v1.1.0/go.mod h1:7P4iRhttt/nUvUOrYIhcpMzv2G6CY9UnI16Z+UJqRyk= +github.com/alexkohler/nakedret/v2 v2.0.2 h1:qnXuZNvv3/AxkAb22q/sEsEpcA99YxLFACDtEw9TPxE= +github.com/alexkohler/nakedret/v2 v2.0.2/go.mod h1:2b8Gkk0GsOrqQv/gPWjNLDSKwG8I5moSXG1K4VIBcTQ= github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= @@ -838,8 +843,8 @@ github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:W github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/ashanbrown/forbidigo v1.5.1 h1:WXhzLjOlnuDYPYQo/eFlcFMi8X/kLfvWLYu6CSoebis= -github.com/ashanbrown/forbidigo v1.5.1/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU= +github.com/ashanbrown/forbidigo v1.5.3 h1:jfg+fkm/snMx+V9FBwsl1d340BV/99kZGv5jN9hBoXk= +github.com/ashanbrown/forbidigo v1.5.3/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU= github.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5FcB28s= github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI= github.com/atc0005/go-teams-notify/v2 v2.7.1 h1:ksY4tG9KAIzx9BJrBYqq5CZaVMk+WrlgsxwrLV5wUVQ= @@ -942,8 +947,8 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= -github.com/bkielbasa/cyclop v1.2.0 h1:7Jmnh0yL2DjKfw28p86YTd/B4lRGcNuu12sKE35sM7A= -github.com/bkielbasa/cyclop v1.2.0/go.mod h1:qOI0yy6A7dYC4Zgsa72Ppm9kONl0RoIlPbzot9mhmeI= +github.com/bkielbasa/cyclop v1.2.1 h1:AeF71HZDob1P2/pRm1so9cd1alZnrpyc4q2uP2l0gJY= +github.com/bkielbasa/cyclop v1.2.1/go.mod h1:K/dT/M0FPAiYjBgQGau7tz+3TMh4FWAEqlMhzFWCrgM= github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb h1:m935MPodAbYS46DG4pJSv7WO+VECIWUQ7OJYSoTrMh4= github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb/go.mod h1:PkYb9DJNAwrSvRx5DYA+gUcOIgTGVMNkfSCbZM8cWpI= github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= @@ -968,8 +973,10 @@ github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx2 github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= -github.com/butuzov/ireturn v0.1.1 h1:QvrO2QF2+/Cx1WA/vETCIYBKtRjc30vesdoPUNo1EbY= -github.com/butuzov/ireturn v0.1.1/go.mod h1:Wh6Zl3IMtTpaIKbmwzqi6olnM9ptYQxxVacMsOEFPoc= +github.com/butuzov/ireturn v0.2.0 h1:kCHi+YzC150GE98WFuZQu9yrTn6GEydO2AuPLbTgnO4= +github.com/butuzov/ireturn v0.2.0/go.mod h1:Wh6Zl3IMtTpaIKbmwzqi6olnM9ptYQxxVacMsOEFPoc= +github.com/butuzov/mirror v1.1.0 h1:ZqX54gBVMXu78QLoiqdwpl2mgmoOJTk7s4p4o+0avZI= +github.com/butuzov/mirror v1.1.0/go.mod h1:8Q0BdQU6rC6WILDiBM60DBfvV78OLJmMmixe7GF45AE= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/caarlos0/ctrlc v1.2.0 h1:AtbThhmbeYx1WW3WXdWrd94EHKi+0NPRGS4/4pzrjwk= github.com/caarlos0/ctrlc v1.2.0/go.mod h1:n3gDlSjsXZ7rbD9/RprIR040b7oaLfNStikPd4gFago= @@ -1354,8 +1361,8 @@ github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= -github.com/go-critic/go-critic v0.7.0 h1:tqbKzB8pqi0NsRZ+1pyU4aweAF7A7QN0Pi4Q02+rYnQ= -github.com/go-critic/go-critic v0.7.0/go.mod h1:moYzd7GdVXE2C2hYTwd7h0CPcqlUeclsyBRwMa38v64= +github.com/go-critic/go-critic v0.8.1 h1:16omCF1gN3gTzt4j4J6fKI/HnRojhEp+Eks6EuKw3vw= +github.com/go-critic/go-critic v0.8.1/go.mod h1:kpzXl09SIJX1cr9TB/g/sAG+eFEl7ZS9f9cqvZtyNl0= github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= @@ -1606,8 +1613,8 @@ github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe h1:6RGUuS7EGotKx6 github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe/go.mod h1:gjqyPShc/m8pEMpk0a3SeagVb0kaqvhscv+i9jI5ZhQ= github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2 h1:amWTbTGqOZ71ruzrdA+Nx5WA3tV1N0goTspwmKCQvBY= github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2/go.mod h1:9wOXstvyDRshQ9LggQuzBCGysxs3b6Uo/1MvYCR2NMs= -github.com/golangci/golangci-lint v1.52.2 h1:FrPElUUI5rrHXg1mQ7KxI1MXPAw5lBVskiz7U7a8a1A= -github.com/golangci/golangci-lint v1.52.2/go.mod h1:S5fhC5sHM5kE22/HcATKd1XLWQxX+y7mHj8B5H91Q/0= +github.com/golangci/golangci-lint v1.53.3 h1:CUcRafczT4t1F+mvdkUm6KuOpxUZTl0yWN/rSU6sSMo= +github.com/golangci/golangci-lint v1.53.3/go.mod h1:W4Gg3ONq6p3Jl+0s/h9Gr0j7yEgHJWWZO2bHl2tBUXM= github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 h1:MfyDlzVjl1hoaPzPD4Gpb/QgoRfSBR0jdhwGyAWwMSA= github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca h1:kNY3/svz5T29MYHubXix4aDDuE3RWHkPvopM/EDv/MA= @@ -1738,8 +1745,8 @@ github.com/gophercloud/gophercloud v0.24.0/go.mod h1:Q8fZtyi5zZxPS/j9aj3sSxtvj41 github.com/gophercloud/gophercloud v1.3.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v1.17.2 h1:fQnZVsXk8uxXIStYb0N4bGk7jeyTalG/wsZjQ25dO0g= -github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28 h1:9alfqbrhuD+9fLZ4iaAVwhlp5PEhmnBt7yvK2Oy5C1U= -github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= +github.com/gordonklaus/ineffassign v0.0.0-20230610083614-0e73809eb601 h1:mrEEilTAUmaAORhssPPkxj84TsHrPMLBGW2Z4SoTxm8= +github.com/gordonklaus/ineffassign v0.0.0-20230610083614-0e73809eb601/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= github.com/goreleaser/chglog v0.5.0 h1:Sk6BMIpx8+vpAf8KyPit34OgWui8c7nKTMHhYx88jJ4= github.com/goreleaser/chglog v0.5.0/go.mod h1:Ri46M3lrMuv76FHszs3vtABR8J8k1w9JHYAzxeeOl28= github.com/goreleaser/fileglob v1.3.0 h1:/X6J7U8lbDpQtBvGcwwPS6OpzkNVlVEsFUVRx9+k+7I= @@ -1981,8 +1988,6 @@ github.com/julz/importas v0.1.0 h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY= github.com/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0= github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= -github.com/junk1tm/musttag v0.5.0 h1:bV1DTdi38Hi4pG4OVWa7Kap0hi0o7EczuK6wQt9zPOM= -github.com/junk1tm/musttag v0.5.0/go.mod h1:PcR7BA+oREQYvHwgjIDmw3exJeds5JzRcvEJTfjrA0M= github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= @@ -2030,8 +2035,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kulti/thelper v0.6.3 h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs= github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I= -github.com/kunwardeep/paralleltest v1.0.6 h1:FCKYMF1OF2+RveWlABsdnmsvJrei5aoyZoaGS+Ugg8g= -github.com/kunwardeep/paralleltest v1.0.6/go.mod h1:Y0Y0XISdZM5IKm3TREQMZ6iteqn1YuwCsJO/0kL9Zes= +github.com/kunwardeep/paralleltest v1.0.7 h1:2uCk94js0+nVNQoHZNLBkAR1DQJrVzw6T0RMzJn55dQ= +github.com/kunwardeep/paralleltest v1.0.7/go.mod h1:2C7s65hONVqY7Q5Efj5aLzRCNLjw2h4eMc9EcypGjcY= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= @@ -2039,8 +2044,8 @@ github.com/kyoh86/exportloopref v0.1.11 h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ github.com/kyoh86/exportloopref v0.1.11/go.mod h1:qkV4UF1zGl6EkF1ox8L5t9SwyeBAZ3qLMd6up458uqA= github.com/ldez/gomoddirectives v0.2.3 h1:y7MBaisZVDYmKvt9/l1mjNCiSA1BVn34U0ObUcJwlhA= github.com/ldez/gomoddirectives v0.2.3/go.mod h1:cpgBogWITnCfRq2qGoDkKMEVSaarhdBr6g8G04uz6d0= -github.com/ldez/tagliatelle v0.4.0 h1:sylp7d9kh6AdXN2DpVGHBRb5guTVAgOxqNGhbqc4b1c= -github.com/ldez/tagliatelle v0.4.0/go.mod h1:mNtTfrHy2haaBAw+VT7IBV6VXBThS7TCreYWbBcJ87I= +github.com/ldez/tagliatelle v0.5.0 h1:epgfuYt9v0CG3fms0pEgIMNPuFf/LpPIfjk4kyqSioo= +github.com/ldez/tagliatelle v0.5.0/go.mod h1:rj1HmWiL1MiKQuOONhd09iySTEkUuE/8+5jtPYz9xa4= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/leonklingele/grouper v1.1.1 h1:suWXRU57D4/Enn6pXR0QVqqWWrnJ9Osrz+5rjt8ivzU= github.com/leonklingele/grouper v1.1.1/go.mod h1:uk3I3uDfi9B6PeUjsCKi6ndcf63Uy7snXgR4yDYQVDY= @@ -2127,8 +2132,8 @@ github.com/maxatome/go-testdeep v1.12.0/go.mod h1:lPZc/HAcJMP92l7yI6TRz1aZN5URwU github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= github.com/mbilski/exhaustivestruct v1.2.0 h1:wCBmUnSYufAHO6J4AVWY6ff+oxWxsVFrwgOdMUQePUo= github.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aksxSUOUy+nvtVEfzXc= -github.com/mgechev/revive v1.3.1 h1:OlQkcH40IB2cGuprTPcjB0iIUddgVZgGmDX3IAMR8D4= -github.com/mgechev/revive v1.3.1/go.mod h1:YlD6TTWl2B8A103R9KWJSPVI9DrEf+oqr15q21Ld+5I= +github.com/mgechev/revive v1.3.2 h1:Wb8NQKBaALBJ3xrrj4zpwJwqwNA6nDpyJSEQWcCka6U= +github.com/mgechev/revive v1.3.2/go.mod h1:UCLtc7o5vg5aXCwdUTU1kEBQ1v+YXPAkYDIDXbrs5I0= github.com/microsoft/ApplicationInsights-Go v0.4.4/go.mod h1:fKRUseBqkw6bDiXTs3ESTiU/4YTIHsQS4W3fP2ieF4U= github.com/microsoft/go-mssqldb v0.21.0/go.mod h1:+4wZTUnz/SV6nffv+RRRB/ss8jPng5Sho2SmM1l2ts4= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= @@ -2227,12 +2232,12 @@ github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 h1:4kuARK6Y6Fx github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354/go.mod h1:KSVJerMDfblTH7p5MZaTt+8zaT2iEk3AkVb9PQdZuE8= github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nishanths/exhaustive v0.9.5 h1:TzssWan6orBiLYVqewCG8faud9qlFntJE30ACpzmGME= -github.com/nishanths/exhaustive v0.9.5/go.mod h1:IbwrGdVMizvDcIxPYGVdQn5BqWJaOwpCvg4RGb8r/TA= +github.com/nishanths/exhaustive v0.11.0 h1:T3I8nUGhl/Cwu5Z2hfc92l0e04D2GEW6e0l8pzda2l0= +github.com/nishanths/exhaustive v0.11.0/go.mod h1:RqwDsZ1xY0dNdqHho2z6X+bgzizwbLYOWnZbbl2wLB4= github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= -github.com/nunnatsa/ginkgolinter v0.9.0 h1:Sm0zX5QfjJzkeCjEp+t6d3Ha0jwvoDjleP9XCsrEzOA= -github.com/nunnatsa/ginkgolinter v0.9.0/go.mod h1:FHaMLURXP7qImeH6bvxWJUpyH+2tuqe5j4rW1gxJRmI= +github.com/nunnatsa/ginkgolinter v0.12.1 h1:vwOqb5Nu05OikTXqhvLdHCGcx5uthIYIl0t79UVrERQ= +github.com/nunnatsa/ginkgolinter v0.12.1/go.mod h1:AK8Ab1PypVrcGUusuKD8RDcl2KgsIwvNaaxAlyHSzso= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= @@ -2362,8 +2367,8 @@ github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZ github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/polyfloyd/go-errorlint v1.4.0 h1:b+sQ5HibPIAjEZwtuwU8Wz/u0dMZ7YL+bk+9yWyHVJk= -github.com/polyfloyd/go-errorlint v1.4.0/go.mod h1:qJCkPeBn+0EXkdKTrUCcuFStM2xrDKfxI3MGLXPexUs= +github.com/polyfloyd/go-errorlint v1.4.2 h1:CU+O4181IxFDdPH6t/HT7IiDj1I7zxNi1RIUxYwn8d0= +github.com/polyfloyd/go-errorlint v1.4.2/go.mod h1:k6fU/+fQe38ednoZS51T7gSIGQW1y94d6TkSr35OzH8= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= @@ -2494,8 +2499,8 @@ github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= github.com/secure-systems-lab/go-securesystemslib v0.3.1/go.mod h1:o8hhjkbNl2gOamKUA/eNW3xUrntHT9L4W89W1nfj43U= -github.com/securego/gosec/v2 v2.15.0 h1:v4Ym7FF58/jlykYmmhZ7mTm7FQvN/setNm++0fgIAtw= -github.com/securego/gosec/v2 v2.15.0/go.mod h1:VOjTrZOkUtSDt2QLSJmQBMWnvwiQPEjg0l+5juIqGk8= +github.com/securego/gosec/v2 v2.16.0 h1:Pi0JKoasQQ3NnoRao/ww/N/XdynIB9NRYYZT5CyOs5U= +github.com/securego/gosec/v2 v2.16.0/go.mod h1:xvLcVZqUfo4aAQu56TNv7/Ltz6emAOQAEsrZrt7uGlI= github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU= @@ -2524,10 +2529,11 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/sivchari/containedctx v1.0.2 h1:0hLQKpgC53OVF1VT7CeoFHk9YKstur1XOgfYIc1yrHI= -github.com/sivchari/containedctx v1.0.2/go.mod h1:PwZOeqm4/DLoJOqMSIJs3aKqXRX4YO+uXww087KZ7Bw= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sivchari/containedctx v1.0.3 h1:x+etemjbsh2fB5ewm5FeLNi5bUjK0V8n0RB+Wwfd0XE= +github.com/sivchari/containedctx v1.0.3/go.mod h1:c1RDvCbnJLtH4lLcYD/GqwiBSSf4F5Qk0xld2rBqzJ4= github.com/sivchari/nosnakecase v1.7.0 h1:7QkpWIRMe8x25gckkFd2A5Pi6Ymo0qgr4JrhGt95do8= github.com/sivchari/nosnakecase v1.7.0/go.mod h1:CwDzrzPea40/GB6uynrNLiorAlgFRvRbFSgJx2Gs+QY= github.com/sivchari/tenv v1.7.1 h1:PSpuD4bu6fSmtWMxSGWcvqUUgIn7k3yOJhOIzVWn8Ak= @@ -2643,8 +2649,8 @@ github.com/theupdateframework/go-tuf v0.3.0 h1:od2sc5+BSkKZhmUG2o2rmruy0BGSmhrbD github.com/theupdateframework/go-tuf v0.3.0/go.mod h1:E5XP0wXitrFUHe4b8cUcAAdxBW4LbfnqF4WXXGLgWNo= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= -github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e h1:MV6KaVu/hzByHP0UvJ4HcMGE/8a6A4Rggc/0wx2AvJo= -github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ= +github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966 h1:quvGphlmUVU+nhpFa4gg4yJyTRJ13reZMDHrKwYw53M= +github.com/timakin/bodyclose v0.0.0-20230421092635-574207250966/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ= github.com/timonwong/loggercheck v0.9.4 h1:HKKhqrjcVj8sxL7K77beXh0adEm6DLjV/QOGeMXEVi4= github.com/timonwong/loggercheck v0.9.4/go.mod h1:caz4zlPcgvpEkXgVnAJGowHAMW2NwHaNlpS8xDbVhTg= github.com/titanous/rocacheck v0.0.0-20171023193734-afe73141d399 h1:e/5i7d4oYZ+C1wj2THlRK+oAhjeS/TRQwMfkIuet3w0= @@ -2709,6 +2715,8 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1: github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/xen0n/gosmopolitan v1.2.1 h1:3pttnTuFumELBRSh+KQs1zcz4fN6Zy7aB0xlnQSn1Iw= +github.com/xen0n/gosmopolitan v1.2.1/go.mod h1:JsHq/Brs1o050OOdmzHeOr0N7OtlnKRAGAsElF8xBQA= github.com/xhit/go-str2duration v1.2.0/go.mod h1:3cPSlfZlUHVlneIVfePFWcJZsuwf+P1v2SRTV4cUmp4= github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo= @@ -2719,6 +2727,8 @@ github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk= github.com/yeya24/promlinter v0.2.0 h1:xFKDQ82orCU5jQujdaD8stOHiv8UN68BSdn2a8u8Y3o= github.com/yeya24/promlinter v0.2.0/go.mod h1:u54lkmBOZrpEbQQ6gox2zWKKLKu2SGe+2KOiextY+IA= +github.com/ykadowak/zerologlint v0.1.2 h1:Um4P5RMmelfjQqQJKtE8ZW+dLZrXrENeIzWWKw800U4= +github.com/ykadowak/zerologlint v0.1.2/go.mod h1:KaUskqF3e/v59oPmdq1U1DnKcuHokl2/K1U4pmIELKg= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -2737,6 +2747,7 @@ gitlab.com/bosi/decorder v0.2.3 h1:gX4/RgK16ijY8V+BRQHAySfQAb354T7/xQpDB2n10P0= gitlab.com/bosi/decorder v0.2.3/go.mod h1:9K1RB5+VPNQYtXtTDAzd2OEftsZb1oV0IrJrzChSdGE= gitlab.com/digitalxero/go-conventional-commit v1.0.7 h1:8/dO6WWG+98PMhlZowt/YjuiKhqhGlOCwlIV8SqqGh8= gitlab.com/digitalxero/go-conventional-commit v1.0.7/go.mod h1:05Xc2BFsSyC5tKhK0y+P3bs0AwUtNuTp+mTpbCU/DZ0= +go-simpler.org/assert v0.5.0 h1:+5L/lajuQtzmbtEfh69sr5cRf2/xZzyJhFjoOz/PPqs= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= @@ -2818,6 +2829,8 @@ go.opentelemetry.io/proto/otlp v0.11.0/go.mod h1:QpEjXPrNQzrFDZgoTo49dgHR9RYRSrg go.opentelemetry.io/proto/otlp v0.12.1/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.tmz.dev/musttag v0.7.0 h1:QfytzjTWGXZmChoX0L++7uQN+yRCPfyFm+whsM+lfGc= +go.tmz.dev/musttag v0.7.0/go.mod h1:oTFPvgOkJmp5kYL02S8+jrH0eLrBIl57rzWeA26zDEM= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -2919,8 +2932,9 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= golang.org/x/exp v0.0.0-20230108222341-4b8118a2686a/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= -golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea h1:vLCWI/yYrdEHyN2JzIzPO3aaQJHQdp89IZBA/+azVC4= +golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/exp/typeparams v0.0.0-20230224173230-c95f2b4c22f2 h1:J74nGeMgeFnYQJN59eFwh06jX/V8g0lB7LWpjSLxtgU= @@ -3944,8 +3958,8 @@ modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw modernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw= modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= -mvdan.cc/gofumpt v0.4.0 h1:JVf4NN1mIpHogBj7ABpgOyZc65/UUOkKQFkoURsz4MM= -mvdan.cc/gofumpt v0.4.0/go.mod h1:PljLOHDeZqgS8opHRKLzp2It2VBuSdteAgqUfzMTxlQ= +mvdan.cc/gofumpt v0.5.0 h1:0EQ+Z56k8tXjj/6TQD25BFNKQXpCvT0rnansIc7Ug5E= +mvdan.cc/gofumpt v0.5.0/go.mod h1:HBeVDtMKRZpXyxFciAirzdKklDlGu8aAy1wEbH5Y9js= mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed h1:WX1yoOaKQfddO/mLzdV4wptyWgoH/6hwLs7QHTixo0I= mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphDJbHOQO1DFFFTeBo= From 391614153c548c5359d1e81290ac7d279e3fc3b7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jul 2023 12:07:18 -0500 Subject: [PATCH 049/125] :seedling: Bump tj-actions/changed-files from 37.0.5 to 37.1.0 (#3253) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 37.0.5 to 37.1.0. - [Release notes](https://github.com/tj-actions/changed-files/releases) - [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md) - [Commits](https://github.com/tj-actions/changed-files/compare/54849deb963ca9f24185fb5de2965e002d066e6b...87e23c4c79a603288642711155953c7da34b11ac) --- updated-dependencies: - dependency-name: tj-actions/changed-files dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: André Backman --- .github/workflows/docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 2744c4c3743..ed3e39d4302 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -42,7 +42,7 @@ jobs: fetch-depth: 2 # needed to diff changed files - id: files name: Get changed files - uses: tj-actions/changed-files@54849deb963ca9f24185fb5de2965e002d066e6b #v37.0.5 + uses: tj-actions/changed-files@87e23c4c79a603288642711155953c7da34b11ac #v37.1.0 with: files_ignore: '**.md' - id: docs_only_check From 5567b9c0f021ad8ca503bca350a233ec06d96c6b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jul 2023 17:18:39 +0000 Subject: [PATCH 050/125] :seedling: Bump github.com/goreleaser/goreleaser in /tools (#3252) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [github.com/goreleaser/goreleaser](https://github.com/goreleaser/goreleaser) from 1.19.1 to 1.19.2. - [Release notes](https://github.com/goreleaser/goreleaser/releases) - [Changelog](https://github.com/goreleaser/goreleaser/blob/main/.goreleaser.yaml) - [Commits](https://github.com/goreleaser/goreleaser/compare/v1.19.1...v1.19.2) --- updated-dependencies: - dependency-name: github.com/goreleaser/goreleaser dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: André Backman --- tools/go.mod | 2 +- tools/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/go.mod b/tools/go.mod index f710ac61dce..21b18ea8bc5 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -7,7 +7,7 @@ require ( github.com/golangci/golangci-lint v1.53.3 github.com/google/addlicense v1.1.1 github.com/google/ko v0.14.1 - github.com/goreleaser/goreleaser v1.19.1 + github.com/goreleaser/goreleaser v1.19.2 github.com/naveensrinivasan/stunning-tribble v0.4.2 github.com/onsi/ginkgo/v2 v2.11.0 google.golang.org/protobuf v1.31.0 diff --git a/tools/go.sum b/tools/go.sum index 42050d49f93..7a9edf0ac53 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -1751,8 +1751,8 @@ github.com/goreleaser/chglog v0.5.0 h1:Sk6BMIpx8+vpAf8KyPit34OgWui8c7nKTMHhYx88j github.com/goreleaser/chglog v0.5.0/go.mod h1:Ri46M3lrMuv76FHszs3vtABR8J8k1w9JHYAzxeeOl28= github.com/goreleaser/fileglob v1.3.0 h1:/X6J7U8lbDpQtBvGcwwPS6OpzkNVlVEsFUVRx9+k+7I= github.com/goreleaser/fileglob v1.3.0/go.mod h1:Jx6BoXv3mbYkEzwm9THo7xbr5egkAraxkGorbJb4RxU= -github.com/goreleaser/goreleaser v1.19.1 h1:MVAFo62jkj6/JflxruefIwfFTqNTeNtkT12Hab1o2Lk= -github.com/goreleaser/goreleaser v1.19.1/go.mod h1:94HBElBUlnXzMZi9Yae1ev8WGeeh21RrxNWYBJW+cxU= +github.com/goreleaser/goreleaser v1.19.2 h1:m24wCy0UzBTGO3zqezAxcoA87RBySRRL0dyJjiNfdjQ= +github.com/goreleaser/goreleaser v1.19.2/go.mod h1:94HBElBUlnXzMZi9Yae1ev8WGeeh21RrxNWYBJW+cxU= github.com/goreleaser/nfpm/v2 v2.31.0 h1:cb8QSZ7tPnUlWPEdYcWwNWXiRvmVPznJ6LYiOIdOJ6Y= github.com/goreleaser/nfpm/v2 v2.31.0/go.mod h1:qlMQCbOTapyqRss16vAPwK/WAjWKdt0gY3vh4wipm8I= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= From 4ca2cac9732d1f5b9b39e4e15a91628ab5149355 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jul 2023 17:20:16 +0000 Subject: [PATCH 051/125] :seedling: Bump golang.org/x/tools from 0.10.0 to 0.11.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [golang.org/x/tools](https://github.com/golang/tools) from 0.10.0 to 0.11.0. - [Release notes](https://github.com/golang/tools/releases) - [Commits](https://github.com/golang/tools/compare/v0.10.0...v0.11.0) --- updated-dependencies: - dependency-name: golang.org/x/tools dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: André Backman --- go.mod | 5 +++-- go.sum | 10 ++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 4040eedfd95..f6f04837bab 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( go.opencensus.io v0.24.0 gocloud.dev v0.30.0 golang.org/x/text v0.11.0 - golang.org/x/tools v0.10.0 + golang.org/x/tools v0.11.0 // indirect google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc // indirect google.golang.org/protobuf v1.31.0 gopkg.in/yaml.v2 v2.4.0 @@ -51,6 +51,7 @@ require ( github.com/mcuadros/go-jsonschema-generator v0.0.0-20200330054847-ba7a369d4303 github.com/onsi/ginkgo/v2 v2.11.0 github.com/otiai10/copy v1.12.0 + golang.org/x/tools/go/vcs v0.1.0-deprecated sigs.k8s.io/release-utils v0.6.0 ) @@ -103,7 +104,7 @@ require ( github.com/spdx/gordf v0.0.0-20221230105357-b735bd5aac89 // indirect github.com/spdx/tools-golang v0.5.2 // indirect github.com/zeebo/xxh3 v1.0.2 // indirect - golang.org/x/mod v0.11.0 // indirect + golang.org/x/mod v0.12.0 // indirect golang.org/x/term v0.10.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/vuln v0.0.0-20230303230808-d3042fecc4e3 // indirect diff --git a/go.sum b/go.sum index 57d14a6fae0..2cf6afb7972 100644 --- a/go.sum +++ b/go.sum @@ -2527,8 +2527,8 @@ golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU= -golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2987,8 +2987,10 @@ golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= -golang.org/x/tools v0.10.0 h1:tvDr/iQoUqNdohiYm0LmmKcBk+q86lb9EprIUFhHHGg= -golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= +golang.org/x/tools v0.11.0 h1:EMCa6U9S2LtZXLAMoWiR/R8dAQFRqbAitmbJ2UKhoi8= +golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= +golang.org/x/tools/go/vcs v0.1.0-deprecated h1:cOIJqWBl99H1dH5LWizPa+0ImeeJq3t3cJjaeOWUAL4= +golang.org/x/tools/go/vcs v0.1.0-deprecated/go.mod h1:zUrvATBAvEI9535oC0yWYsLsHIV4Z7g63sNPVMtuBy8= golang.org/x/vuln v0.0.0-20230303230808-d3042fecc4e3 h1:9GJsAwSzB/ztwMwsEm3ihUgCXHCULbNsubxqIrdKa44= golang.org/x/vuln v0.0.0-20230303230808-d3042fecc4e3/go.mod h1:LTLnfk/dpXDNKsX6aCg/cI4LyCVnTyrQhgV/yLJuly0= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 7f556b5a25f51a07ff925eaa82a9fb256aad3974 Mon Sep 17 00:00:00 2001 From: Naveen <172697+naveensrinivasan@users.noreply.github.com> Date: Mon, 10 Jul 2023 15:35:06 -0500 Subject: [PATCH 052/125] :seedling: Improve rate limit handling in roundtripper (#3237) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add rate limit testing and handling functionality - Add tests for successful response and Retry-After header set scenarios Signed-off-by: naveensrinivasan <172697+naveensrinivasan@users.noreply.github.com> Signed-off-by: André Backman --- clients/githubrepo/roundtripper/rate_limit.go | 2 +- .../roundtripper/rate_limit_test.go | 94 +++++++++++++++++++ 2 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 clients/githubrepo/roundtripper/rate_limit_test.go diff --git a/clients/githubrepo/roundtripper/rate_limit.go b/clients/githubrepo/roundtripper/rate_limit.go index 950e8f8aa8b..d2ae8378ab1 100644 --- a/clients/githubrepo/roundtripper/rate_limit.go +++ b/clients/githubrepo/roundtripper/rate_limit.go @@ -42,7 +42,7 @@ type rateLimitTransport struct { innerTransport http.RoundTripper } -// Roundtrip handles caching and ratelimiting of responses from GitHub. +// RoundTrip handles caching and rate-limiting of responses from GitHub. func (gh *rateLimitTransport) RoundTrip(r *http.Request) (*http.Response, error) { resp, err := gh.innerTransport.RoundTrip(r) if err != nil { diff --git a/clients/githubrepo/roundtripper/rate_limit_test.go b/clients/githubrepo/roundtripper/rate_limit_test.go new file mode 100644 index 00000000000..b74b7d997b8 --- /dev/null +++ b/clients/githubrepo/roundtripper/rate_limit_test.go @@ -0,0 +1,94 @@ +// Copyright 2023 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +package roundtripper + +import ( + "net/http" + "net/http/httptest" + "testing" + + "github.com/ossf/scorecard/v4/log" +) + +func TestRoundTrip(t *testing.T) { + t.Parallel() + var requestCount int + ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + // Customize the response headers and body based on the test scenario + switch r.URL.Path { + case "/error": + w.WriteHeader(http.StatusInternalServerError) + w.Write([]byte("Internal Server Error")) // nolint: errcheck + case "/retry": + requestCount++ + if requestCount == 2 { + // Second request: Return successful response + w.Header().Set("X-RateLimit-Remaining", "10") + w.WriteHeader(http.StatusOK) + w.Write([]byte("Success")) // nolint: errcheck + } else { + // First request: Return Retry-After header + w.Header().Set("Retry-After", "1") + w.WriteHeader(http.StatusTooManyRequests) + w.Write([]byte("Rate Limit Exceeded")) // nolint: errcheck + } + case "/success": + w.Header().Set("X-RateLimit-Remaining", "10") + w.WriteHeader(http.StatusOK) + w.Write([]byte("Success")) // nolint: errcheck + } + })) + t.Cleanup(func() { + defer ts.Close() + }) + + // Create the rateLimitTransport with the test server as the inner transport and a default logger + transport := &rateLimitTransport{ + innerTransport: ts.Client().Transport, + logger: log.NewLogger(log.DefaultLevel), + } + + t.Run("Successful response", func(t *testing.T) { + req, err := http.NewRequest(http.MethodGet, ts.URL+"/success", nil) + if err != nil { + t.Fatalf("Failed to create request: %v", err) + } + + resp, err := transport.RoundTrip(req) + if err != nil { + t.Errorf("Unexpected error: %v", err) + } + if resp.StatusCode != http.StatusOK { + t.Errorf("Expected status code %d, got %d", http.StatusOK, resp.StatusCode) + } + }) + + t.Run("Retry-After header set", func(t *testing.T) { + req, err := http.NewRequest(http.MethodGet, ts.URL+"/retry", nil) + if err != nil { + t.Fatalf("Failed to create request: %v", err) + } + + resp, err := transport.RoundTrip(req) + if err != nil { + t.Errorf("Unexpected error: %v", err) + } + if resp.StatusCode != http.StatusOK { + t.Errorf("Expected status code %d, got %d", http.StatusOK, resp.StatusCode) + } + if requestCount != 2 { + t.Errorf("Expected 2 requests, got %d", requestCount) + } + }) +} From f4256e4f24793a33d246d444afe19de892944dd2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Jul 2023 08:13:42 -0500 Subject: [PATCH 053/125] :seedling: Bump tj-actions/changed-files from 37.1.0 to 37.1.1 (#3259) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 37.1.0 to 37.1.1. - [Release notes](https://github.com/tj-actions/changed-files/releases) - [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md) - [Commits](https://github.com/tj-actions/changed-files/compare/87e23c4c79a603288642711155953c7da34b11ac...1f20fb83f05eabed6e12ba0329edac8b6ec8e207) --- updated-dependencies: - dependency-name: tj-actions/changed-files dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: André Backman --- .github/workflows/docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index ed3e39d4302..0ac1adecdef 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -42,7 +42,7 @@ jobs: fetch-depth: 2 # needed to diff changed files - id: files name: Get changed files - uses: tj-actions/changed-files@87e23c4c79a603288642711155953c7da34b11ac #v37.1.0 + uses: tj-actions/changed-files@1f20fb83f05eabed6e12ba0329edac8b6ec8e207 #v37.1.1 with: files_ignore: '**.md' - id: docs_only_check From 33f4fb3fb8050aadcf8fe903891b403dec0212c6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Jul 2023 09:08:34 -0500 Subject: [PATCH 054/125] :seedling: Bump github.com/bradleyfalzon/ghinstallation/v2 (#3260) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [github.com/bradleyfalzon/ghinstallation/v2](https://github.com/bradleyfalzon/ghinstallation) from 2.5.0 to 2.6.0. - [Release notes](https://github.com/bradleyfalzon/ghinstallation/releases) - [Commits](https://github.com/bradleyfalzon/ghinstallation/compare/v2.5.0...v2.6.0) --- updated-dependencies: - dependency-name: github.com/bradleyfalzon/ghinstallation/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: André Backman --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index f6f04837bab..6c0000a85f1 100644 --- a/go.mod +++ b/go.mod @@ -14,7 +14,7 @@ require ( cloud.google.com/go/trace v1.10.0 // indirect contrib.go.opencensus.io/exporter/stackdriver v0.13.14 github.com/bombsimon/logrusr/v2 v2.0.1 - github.com/bradleyfalzon/ghinstallation/v2 v2.5.0 + github.com/bradleyfalzon/ghinstallation/v2 v2.6.0 github.com/go-git/go-git/v5 v5.7.0 github.com/go-logr/logr v1.2.4 github.com/golang/mock v1.6.0 @@ -79,7 +79,7 @@ require ( github.com/golang/snappy v0.0.4 // indirect github.com/google/flatbuffers v2.0.8+incompatible // indirect github.com/google/gnostic v0.6.9 // indirect - github.com/google/go-github/v53 v53.0.0 // indirect + github.com/google/go-github/v53 v53.2.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/pprof v0.0.0-20230406165453-00490a63f317 // indirect github.com/google/s2a-go v0.1.4 // indirect diff --git a/go.sum b/go.sum index 2cf6afb7972..525bd54c6c2 100644 --- a/go.sum +++ b/go.sum @@ -885,8 +885,8 @@ github.com/bombsimon/logrusr/v2 v2.0.1 h1:1VgxVNQMCvjirZIYaT9JYn6sAVGVEcNtRE0y4m github.com/bombsimon/logrusr/v2 v2.0.1/go.mod h1:ByVAX+vHdLGAfdroiMg6q0zgq2FODY2lc5YJvzmOJio= github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/bradleyfalzon/ghinstallation/v2 v2.5.0 h1:yaYcGQ7yEIGbsJfW/9z7v1sLiZg/5rSNNXwmMct5XaE= -github.com/bradleyfalzon/ghinstallation/v2 v2.5.0/go.mod h1:amcvPQMrRkWNdueWOjPytGL25xQGzox7425qMgzo+Vo= +github.com/bradleyfalzon/ghinstallation/v2 v2.6.0 h1:IRY7Xy588KylkoycsUhFpW7cdGpy5Y5BPsz4IfuJtGk= +github.com/bradleyfalzon/ghinstallation/v2 v2.6.0/go.mod h1:oQ3etOwN3TRH4EwgW5/7MxSVMGlMlzG/O8TU7eYdoSk= github.com/bradleyjkemp/cupaloy/v2 v2.8.0 h1:any4BmKE+jGIaMpnU8YgH/I2LPiLBufr6oMMlVBbn9M= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= @@ -1442,8 +1442,8 @@ github.com/google/go-containerregistry v0.15.2 h1:MMkSh+tjSdnmJZO7ljvEqV1DjfekB6 github.com/google/go-containerregistry v0.15.2/go.mod h1:wWK+LnOv4jXMM23IT/F1wdYftGWGr47Is8CG+pmHK1Q= github.com/google/go-github/v38 v38.1.0 h1:C6h1FkaITcBFK7gAmq4eFzt6gbhEhk7L5z6R3Uva+po= github.com/google/go-github/v38 v38.1.0/go.mod h1:cStvrz/7nFr0FoENgG6GLbp53WaelXucT+BBz/3VKx4= -github.com/google/go-github/v53 v53.0.0 h1:T1RyHbSnpHYnoF0ZYKiIPSgPtuJ8G6vgc0MKodXsQDQ= -github.com/google/go-github/v53 v53.0.0/go.mod h1:XhFRObz+m/l+UCm9b7KSIC3lT3NWSXGt7mOsAWEloao= +github.com/google/go-github/v53 v53.2.0 h1:wvz3FyF53v4BK+AsnvCmeNhf8AkTaeh2SoYu/XUvTtI= +github.com/google/go-github/v53 v53.2.0/go.mod h1:XhFRObz+m/l+UCm9b7KSIC3lT3NWSXGt7mOsAWEloao= github.com/google/go-pkcs11 v0.2.0/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= From 4b16bf9fea51bbd9fd30279d2b7448ce4706c518 Mon Sep 17 00:00:00 2001 From: Ajmal Kottilingal <90693406+ajmalab@users.noreply.github.com> Date: Wed, 12 Jul 2023 18:22:38 +0100 Subject: [PATCH 055/125] =?UTF-8?q?=F0=9F=8C=B1Add=20urls=20for=20opentele?= =?UTF-8?q?metry,=20micrometer=20and=20new=20relic=20to=20weekly=20cron=20?= =?UTF-8?q?(#3248)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add urls for opentelemetry and micrometer Signed-off-by: Ajmal Kottilingal * add jakarta-activation url Signed-off-by: Ajmal Kottilingal * adding json-path Signed-off-by: Ajmal Kottilingal * fix uing make Signed-off-by: Ajmal Kottilingal --------- Signed-off-by: Ajmal Kottilingal Signed-off-by: André Backman --- cron/internal/data/projects.csv | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cron/internal/data/projects.csv b/cron/internal/data/projects.csv index c413885739e..612b37a55eb 100755 --- a/cron/internal/data/projects.csv +++ b/cron/internal/data/projects.csv @@ -458356,6 +458356,7 @@ github.com/eclipse-che/che-operator,num_dependents_deps.dev:0 github.com/eclipse-che/che-theia,num_dependents_deps.dev:0 github.com/eclipse-color-theme/eclipse-color-theme,criticality_score:0.336420 github.com/eclipse-cyclonedds/cyclonedds-python, +github.com/eclipse-ee4j/angus-activation, github.com/eclipse-ee4j/authentication,num_dependents_deps.dev:124 github.com/eclipse-ee4j/batch-api,num_dependents_deps.dev:10 github.com/eclipse-ee4j/batch-tck,num_dependents_deps.dev:16 @@ -803275,7 +803276,9 @@ github.com/micromdm/micromdm,"criticality_score:0.430170,num_dependents_deps.dev github.com/micromdm/nanomdm,num_dependents_deps.dev:0 github.com/micromdm/scep,num_dependents_deps.dev:36 github.com/micromed-dev/herz-ui,num_dependents_deps.dev:0 +github.com/micrometer-metrics/context-propagation, github.com/micrometer-metrics/micrometer,criticality_score:0.638810 +github.com/micrometer-metrics/tracing, github.com/microminion/1tp, github.com/microminion/1tp-registrar,num_dependents_deps.dev:0 github.com/microminion/mm-runtime-info,num_dependents_deps.dev:4 @@ -852948,6 +852951,7 @@ github.com/newrelic/newrelic-fluent-bit-output,num_dependents_deps.dev:0 github.com/newrelic/newrelic-infra-operator,num_dependents_deps.dev:0 github.com/newrelic/newrelic-introspector-node, github.com/newrelic/newrelic-introspector-python, +github.com/newrelic/newrelic-java-agent, github.com/newrelic/newrelic-kubernetes-operator,num_dependents_deps.dev:0 github.com/newrelic/newrelic-lambda-cli, github.com/newrelic/newrelic-lambda-extension,num_dependents_deps.dev:0 @@ -887562,6 +887566,7 @@ github.com/open-telemetry/opentelemetry-go,"criticality_score:0.587880,num_depen github.com/open-telemetry/opentelemetry-go-build-tools,num_dependents_deps.dev:2 github.com/open-telemetry/opentelemetry-go-contrib,num_dependents_deps.dev:1476 github.com/open-telemetry/opentelemetry-java,"criticality_score:0.596480,num_dependents_deps.dev:101" +github.com/open-telemetry/opentelemetry-java-instrumentation, github.com/open-telemetry/opentelemetry-js,"criticality_score:0.610960,num_dependents_deps.dev:13812" github.com/open-telemetry/opentelemetry-js-api,num_dependents_deps.dev:3224 github.com/open-telemetry/opentelemetry-js-contrib,num_dependents_deps.dev:168 From 3fb0fb9e1d22cd2bbfcebbd1dbe283008dac60ec Mon Sep 17 00:00:00 2001 From: Gabriela Gutierrez Date: Wed, 12 Jul 2023 21:26:06 +0000 Subject: [PATCH 056/125] =?UTF-8?q?=F0=9F=90=9B=20=20Add=20npm=20installs?= =?UTF-8?q?=20to=20Pinned-Dependencies=20score=20(#2960)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: Add npm install to pinned dependencies score Signed-off-by: Gabriela Gutierrez * test: Fix pinned dependencies evaluation tests Considering the new npm installs dependencies in Pinned-Dependencies score, there are some changes. Now, all tests generate one more Info log for "npm installs are all pinned". Also, for "various wanrings" test, the total score has to weight now 6 scores instead of 5. The new score counts 10 for actionScore, 0 for dockerFromScore, 0 for dockerDownloadScore, 0 for scriptScore, 0 for pipScore and 10 for npm score, which gives us 20/6~=3. Signed-off-by: Gabriela Gutierrez * test: Fix pinned dependencies e2e tests Considering the new npm installs dependencies in Pinned-Dependencies score, there are some changes. The repo being tested, ossf-tests/scorecard-check-pinned-dependencies-e2e, has third-party GitHub actions pinned, no npm installs, and all other dependencies types are unpinned. This gives us 8 for actionScore, 10 for npmScore and 0 for all other scores. Previously the total score was 8/5~=1, and now the total score is 18/6=3. Also, since there are no npm installs, there's one more Info log for "npm installs are pinned". Signed-off-by: Gabriela Gutierrez * test: Fix typo Signed-off-by: Gabriela Gutierrez * test: Unpinned npm install score When having one unpinned npm install and all other dependencies pinned, the score should be 50/6~=8. Also, it should raise 1 warning for the unpinned npm install, 6 infos saying the other dependency types are pinned (2 for GHAs, 2 for dockerfile image and downdloads, 1 for script downdloads and 1 for pip installs), and 0 debug logs since the npm install dependency does not have an error message. Signed-off-by: Gabriela Gutierrez * test: Undefined npm install score When an error happens to parse a npm install dependency, the error/debug message is saved in "Msg" field. In this case, we were not able to define if the npm install is pinned or not. This dependency is classified as pinned undefined. We treat such cases as pinned cases, so it logs as Info that npm installs are all pinned and counts the score as 10. Then, the final score makes it to 10 as well. Since it logs the error/debug message, the Debug log goes to 1. Signed-off-by: Gabriela Gutierrez * test: Fix typo Signed-off-by: Gabriela Gutierrez * test: Fix "validate various warnings and info" test Considering the new npm installs dependencies in Pinned-Dependencies score, there are some changes. Now, all tests generate one more Info log for "npm installs are all pinned". Also, this test total score has to weight now 6 scores instead of 5. The new score counts 10 for actionScore, 0 for dockerFromScore, 0 for dockerDownloadScore, 0 for scriptScore, 0 for pipScore and 10 for npm score, which gives us 20/6~=3. Signed-off-by: Gabriela Gutierrez * fix: npm dependencies pinned log Signed-off-by: Gabriela Gutierrez * test: Remove test of error when parsing an npm dependency Signed-off-by: Gabriela Gutierrez --------- Signed-off-by: Gabriela Gutierrez Signed-off-by: André Backman --- checks/evaluation/pinned_dependencies.go | 18 ++++++++- checks/evaluation/pinned_dependencies_test.go | 38 +++++++++++++------ e2e/pinned_dependencies_test.go | 12 +++--- 3 files changed, 50 insertions(+), 18 deletions(-) diff --git a/checks/evaluation/pinned_dependencies.go b/checks/evaluation/pinned_dependencies.go index d9133d76da4..a8e98be8e17 100644 --- a/checks/evaluation/pinned_dependencies.go +++ b/checks/evaluation/pinned_dependencies.go @@ -127,15 +127,22 @@ func PinningDependencies(name string, c *checker.CheckRequest, return checker.CreateRuntimeErrorResult(name, err) } + // Npm installs. + npmScore, err := createReturnForIsNpmInstallPinned(pr, dl) + if err != nil { + return checker.CreateRuntimeErrorResult(name, err) + } + // Scores may be inconclusive. actionScore = maxScore(0, actionScore) dockerFromScore = maxScore(0, dockerFromScore) dockerDownloadScore = maxScore(0, dockerDownloadScore) scriptScore = maxScore(0, scriptScore) pipScore = maxScore(0, pipScore) + npmScore = maxScore(0, npmScore) score := checker.AggregateScores(actionScore, dockerFromScore, - dockerDownloadScore, scriptScore, pipScore) + dockerDownloadScore, scriptScore, pipScore, npmScore) if score == checker.MaxResultScore { return checker.CreateMaxScoreResult(name, "all dependencies are pinned") @@ -260,6 +267,15 @@ func createReturnForIsPipInstallPinned(pr map[checker.DependencyUseType]pinnedRe dl) } +// Create the result for npm install commands. +func createReturnForIsNpmInstallPinned(pr map[checker.DependencyUseType]pinnedResult, + dl checker.DetailLogger, +) (int, error) { + return createReturnValues(pr, checker.DependencyUseTypeNpmCommand, + "npm installs are pinned", + dl) +} + func createReturnValues(pr map[checker.DependencyUseType]pinnedResult, t checker.DependencyUseType, infoMsg string, dl checker.DetailLogger, diff --git a/checks/evaluation/pinned_dependencies_test.go b/checks/evaluation/pinned_dependencies_test.go index cd497a6cfbf..5e3e369a314 100644 --- a/checks/evaluation/pinned_dependencies_test.go +++ b/checks/evaluation/pinned_dependencies_test.go @@ -111,7 +111,7 @@ func Test_PinningDependencies(t *testing.T) { Error: nil, Score: checker.MaxResultScore, NumberOfWarn: 0, - NumberOfInfo: 6, + NumberOfInfo: 7, NumberOfDebug: 1, }, }, @@ -132,12 +132,12 @@ func Test_PinningDependencies(t *testing.T) { Error: nil, Score: 6, NumberOfWarn: 1, - NumberOfInfo: 4, + NumberOfInfo: 5, NumberOfDebug: 1, }, }, { - name: "various wanrings", + name: "various warnings", dependencies: []checker.Dependency{ { Location: &checker.File{}, @@ -158,9 +158,9 @@ func Test_PinningDependencies(t *testing.T) { }, expected: scut.TestReturn{ Error: nil, - Score: 2, + Score: 3, NumberOfWarn: 3, - NumberOfInfo: 2, + NumberOfInfo: 3, NumberOfDebug: 1, }, }, @@ -176,7 +176,7 @@ func Test_PinningDependencies(t *testing.T) { Error: nil, Score: 8, NumberOfWarn: 1, - NumberOfInfo: 5, + NumberOfInfo: 6, NumberOfDebug: 0, }, }, @@ -193,7 +193,7 @@ func Test_PinningDependencies(t *testing.T) { Error: nil, Score: 10, NumberOfWarn: 0, - NumberOfInfo: 6, + NumberOfInfo: 7, NumberOfDebug: 1, }, }, @@ -203,12 +203,12 @@ func Test_PinningDependencies(t *testing.T) { Error: nil, Score: 10, NumberOfWarn: 0, - NumberOfInfo: 6, + NumberOfInfo: 7, NumberOfDebug: 0, }, }, { - name: "Validate various wanrings and info", + name: "Validate various warnings and info", dependencies: []checker.Dependency{ { Location: &checker.File{}, @@ -229,12 +229,28 @@ func Test_PinningDependencies(t *testing.T) { }, expected: scut.TestReturn{ Error: nil, - Score: 2, + Score: 3, NumberOfWarn: 3, - NumberOfInfo: 2, + NumberOfInfo: 3, NumberOfDebug: 1, }, }, + { + name: "unpinned npm install", + dependencies: []checker.Dependency{ + { + Location: &checker.File{}, + Type: checker.DependencyUseTypeNpmCommand, + }, + }, + expected: scut.TestReturn{ + Error: nil, + Score: 8, + NumberOfWarn: 1, + NumberOfInfo: 6, + NumberOfDebug: 0, + }, + }, } for _, tt := range tests { diff --git a/e2e/pinned_dependencies_test.go b/e2e/pinned_dependencies_test.go index aaec45dda63..8253abf49cc 100644 --- a/e2e/pinned_dependencies_test.go +++ b/e2e/pinned_dependencies_test.go @@ -49,9 +49,9 @@ var _ = Describe("E2E TEST:"+checks.CheckPinnedDependencies, func() { } expected := scut.TestReturn{ Error: nil, - Score: 1, + Score: 3, NumberOfWarn: 139, - NumberOfInfo: 1, + NumberOfInfo: 2, NumberOfDebug: 0, } result := checks.PinningDependencies(&req) @@ -74,9 +74,9 @@ var _ = Describe("E2E TEST:"+checks.CheckPinnedDependencies, func() { } expected := scut.TestReturn{ Error: nil, - Score: 1, + Score: 3, NumberOfWarn: 139, - NumberOfInfo: 1, + NumberOfInfo: 2, NumberOfDebug: 0, } result := checks.PinningDependencies(&req) @@ -110,9 +110,9 @@ var _ = Describe("E2E TEST:"+checks.CheckPinnedDependencies, func() { } expected := scut.TestReturn{ Error: nil, - Score: 1, + Score: 3, NumberOfWarn: 139, - NumberOfInfo: 1, + NumberOfInfo: 2, NumberOfDebug: 0, } result := checks.PinningDependencies(&req) From b3383af64693ac445a1cf4cbd4caf0d16af519aa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 13 Jul 2023 17:41:32 -0500 Subject: [PATCH 057/125] :seedling: Bump github.com/moby/buildkit from 0.11.6 to 0.12.0 (#3264) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [github.com/moby/buildkit](https://github.com/moby/buildkit) from 0.11.6 to 0.12.0. - [Release notes](https://github.com/moby/buildkit/releases) - [Commits](https://github.com/moby/buildkit/compare/v0.11.6...v0.12.0) --- updated-dependencies: - dependency-name: github.com/moby/buildkit dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: André Backman --- go.mod | 8 ++++---- go.sum | 15 ++++++++------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index 6c0000a85f1..6b2406fcf78 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/grafeas/kritis v0.2.3-0.20210120183821-faeba81c520c github.com/h2non/filetype v1.1.3 github.com/jszwec/csvutil v1.8.0 - github.com/moby/buildkit v0.11.6 + github.com/moby/buildkit v0.12.0 github.com/olekukonko/tablewriter v0.0.5 github.com/onsi/gomega v1.27.8 github.com/shurcooL/githubv4 v0.0.0-20201206200315-234843c633fa @@ -66,6 +66,7 @@ require ( github.com/apache/arrow/go/v12 v12.0.0 // indirect github.com/apache/thrift v0.16.0 // indirect github.com/cloudflare/circl v1.3.3 // indirect + github.com/containerd/typeurl/v2 v2.1.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/emicklei/go-restful/v3 v3.10.1 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect @@ -134,10 +135,9 @@ require ( github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be // indirect github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect - github.com/containerd/typeurl v1.0.2 // indirect - github.com/docker/cli v23.0.5+incompatible // indirect + github.com/docker/cli v24.0.2+incompatible // indirect github.com/docker/distribution v2.8.2+incompatible // indirect - github.com/docker/docker v23.0.5+incompatible // indirect + github.com/docker/docker v24.0.0-rc.2.0.20230706181717-98d3da79ef9c+incompatible // indirect github.com/docker/docker-credential-helpers v0.7.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/fatih/color v1.14.1 // indirect diff --git a/go.sum b/go.sum index 525bd54c6c2..8010cb9abef 100644 --- a/go.sum +++ b/go.sum @@ -1033,8 +1033,9 @@ github.com/containerd/ttrpc v1.1.0/go.mod h1:XX4ZTnoOId4HklF4edwc4DcqskFZuvXB1Ev github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/containerd/typeurl v0.0.0-20190911142611-5eb25027c9fd/go.mod h1:GeKYzf2pQcqv7tJ0AoCuuhtnqhva5LNU3U+OyKxxJpk= github.com/containerd/typeurl v1.0.1/go.mod h1:TB1hUtrpaiO88KEK56ijojHS1+NeF0izUACaJW2mdXg= -github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY= github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= +github.com/containerd/typeurl/v2 v2.1.1 h1:3Q4Pt7i8nYwy2KmQWIw2+1hTvwTE/6w9FqcttATPO/4= +github.com/containerd/typeurl/v2 v2.1.1/go.mod h1:IDp2JFvbwZ31H8dQbEIY7sDl2L3o3HZj1hsSQlywkQ0= github.com/containerd/zfs v0.0.0-20200918131355-0a33824f23a2/go.mod h1:8IgZOBdv8fAgXddBT4dBXJPtxyRsejFIpXoklgxgEjw= github.com/containerd/zfs v0.0.0-20210301145711-11e8f1707f62/go.mod h1:A9zfAbMlQwE+/is6hi0Xw8ktpL+6glmqZYtevJgaB8Y= github.com/containerd/zfs v0.0.0-20210315114300-dde8f0fda960/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= @@ -1099,16 +1100,16 @@ github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyG github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/cli v23.0.5+incompatible h1:ufWmAOuD3Vmr7JP2G5K3cyuNC4YZWiAsuDEvFVVDafE= -github.com/docker/cli v23.0.5+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v24.0.2+incompatible h1:QdqR7znue1mtkXIJ+ruQMGQhpw2JzMJLRXp6zpzF6tM= +github.com/docker/cli v24.0.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v20.10.14+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v23.0.4+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v23.0.5+incompatible h1:DaxtlTJjFSnLOXVNUBU1+6kXGz2lpDoEAH6QoxaSg8k= -github.com/docker/docker v23.0.5+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v24.0.0-rc.2.0.20230706181717-98d3da79ef9c+incompatible h1:XccikgvtGCEZE9ZQoaEApdx9ZvruGYakfi2tw4d/vUg= +github.com/docker/docker v24.0.0-rc.2.0.20230706181717-98d3da79ef9c+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A= github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0= @@ -1874,8 +1875,8 @@ github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RR github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/moby/buildkit v0.11.6 h1:VYNdoKk5TVxN7k4RvZgdeM4GOyRvIi4Z8MXOY7xvyUs= -github.com/moby/buildkit v0.11.6/go.mod h1:GCqKfHhz+pddzfgaR7WmHVEE3nKKZMMDPpK8mh3ZLv4= +github.com/moby/buildkit v0.12.0 h1:hgPDVSeondFLb28cBtRR5O0N4t8uWGJ4YNukT2aICIs= +github.com/moby/buildkit v0.12.0/go.mod h1:+n9GmkxwBCjVz4u7wmiyh+oqvjIjQM+1zk3iJrWfdos= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= From aacf508752fe46bceb3f465ad6dfe8041c4507ed Mon Sep 17 00:00:00 2001 From: Spencer Schrock Date: Thu, 13 Jul 2023 15:52:40 -0700 Subject: [PATCH 058/125] Ack linter warning and add tracking issue. (#3263) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Spencer Schrock Signed-off-by: André Backman --- cron/internal/data/update/dependency.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cron/internal/data/update/dependency.go b/cron/internal/data/update/dependency.go index fde69bac255..e0757aad033 100644 --- a/cron/internal/data/update/dependency.go +++ b/cron/internal/data/update/dependency.go @@ -27,7 +27,7 @@ import ( "github.com/go-git/go-git/v5" "github.com/google/go-github/v38/github" - "golang.org/x/tools/go/vcs" + "golang.org/x/tools/go/vcs" //nolint:staticcheck // TODO(https://github.com/ossf/scorecard/issues/3262) "github.com/ossf/scorecard/v4/clients/githubrepo" "github.com/ossf/scorecard/v4/cron/data" From afab33067e973ed3151db35c227306100f600126 Mon Sep 17 00:00:00 2001 From: Pedro Nacht Date: Thu, 13 Jul 2023 21:33:21 -0300 Subject: [PATCH 059/125] =?UTF-8?q?=F0=9F=90=9B=20Forgive=20job-level=20pe?= =?UTF-8?q?rmissions=20(#3162)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Forgive all job-level permissions Signed-off-by: Pedro Kaj Kjellerup Nacht * Update tests Signed-off-by: Pedro Kaj Kjellerup Nacht * Replace magic number Signed-off-by: Pedro Kaj Kjellerup Nacht * Rename test Signed-off-by: Pedro Kaj Kjellerup Nacht * Test that multiple job-level permissions are forgiven Signed-off-by: Pedro Kaj Kjellerup Nacht * Drop unused permissionIsPresent Signed-off-by: Pedro Kaj Kjellerup Nacht * Update documentation Signed-off-by: Pedro Kaj Kjellerup Nacht * Modify score descriptions Signed-off-by: Pedro Kaj Kjellerup Nacht * Document warning for job-level permissions Signed-off-by: Pedro Kaj Kjellerup Nacht * List job-level permissions that get WARNed Signed-off-by: Pedro Kaj Kjellerup Nacht --------- Signed-off-by: Pedro Kaj Kjellerup Nacht Signed-off-by: André Backman --- checks/evaluation/permissions/permissions.go | 17 +++--- checks/permissions_test.go | 21 ++++++-- ...kflow-permissions-run-multiple-writes.yaml | 30 +++++++++++ docs/checks.md | 38 +++++++------- docs/checks/internal/checks.yaml | 52 ++++++++++--------- 5 files changed, 101 insertions(+), 57 deletions(-) create mode 100644 checks/testdata/.github/workflows/github-workflow-permissions-run-multiple-writes.yaml diff --git a/checks/evaluation/permissions/permissions.go b/checks/evaluation/permissions/permissions.go index ed8b0cbc21d..8f0c1be5d2b 100644 --- a/checks/evaluation/permissions/permissions.go +++ b/checks/evaluation/permissions/permissions.go @@ -56,11 +56,11 @@ func TokenPermissions(name string, c *checker.CheckRequest, r *checker.TokenPerm if score != checker.MaxResultScore { return checker.CreateResultWithScore(name, - "non read-only tokens detected in GitHub workflows", score) + "detected GitHub workflow tokens with excessive permissions", score) } return checker.CreateMaxScoreResult(name, - "tokens are read-only in GitHub workflows") + "GitHub workflow tokens follow principle of least privilege") } func applyScorePolicy(results *checker.TokenPermissionsData, c *checker.CheckRequest) (int, error) { @@ -325,21 +325,21 @@ func calculateScore(result map[string]permissions) int { // status: https://docs.github.com/en/rest/reference/repos#statuses. // May allow an attacker to change the result of pre-submit and get a PR merged. // Low risk: -0.5. - if permissionIsPresent(perms, "statuses") { + if permissionIsPresentInTopLevel(perms, "statuses") { score -= 0.5 } // checks. // May allow an attacker to edit checks to remove pre-submit and introduce a bug. // Low risk: -0.5. - if permissionIsPresent(perms, "checks") { + if permissionIsPresentInTopLevel(perms, "checks") { score -= 0.5 } // secEvents. // May allow attacker to read vuln reports before patch available. // Low risk: -1 - if permissionIsPresent(perms, "security-events") { + if permissionIsPresentInTopLevel(perms, "security-events") { score-- } @@ -348,7 +348,7 @@ func calculateScore(result map[string]permissions) int { // and tiny chance an attacker can trigger a remote // service with code they own if server accepts code/location var unsanitized. // Low risk: -1 - if permissionIsPresent(perms, "deployments") { + if permissionIsPresentInTopLevel(perms, "deployments") { score-- } @@ -386,11 +386,6 @@ func calculateScore(result map[string]permissions) int { return int(score) } -func permissionIsPresent(perms permissions, name string) bool { - return permissionIsPresentInTopLevel(perms, name) || - permissionIsPresentInRunLevel(perms, name) -} - func permissionIsPresentInTopLevel(perms permissions, name string) bool { _, ok := perms.topLevelWritePermissions[name] return ok diff --git a/checks/permissions_test.go b/checks/permissions_test.go index 41f42f105bf..0b06e0628f8 100644 --- a/checks/permissions_test.go +++ b/checks/permissions_test.go @@ -53,7 +53,7 @@ func TestGithubTokenPermissions(t *testing.T) { filenames: []string{"./testdata/.github/workflows/github-workflow-permissions-run-no-codeql-write.yaml"}, expected: scut.TestReturn{ Error: nil, - Score: checker.MaxResultScore - 1, + Score: checker.MaxResultScore, NumberOfWarn: 1, NumberOfInfo: 1, NumberOfDebug: 4, @@ -302,11 +302,11 @@ func TestGithubTokenPermissions(t *testing.T) { }, }, { - name: "workflow jobs only", + name: "penalize job-level read without top level permissions", filenames: []string{"./testdata/.github/workflows/github-workflow-permissions-jobs-only.yaml"}, expected: scut.TestReturn{ Error: nil, - Score: 9, + Score: checker.MaxResultScore - 1, NumberOfWarn: 1, NumberOfInfo: 4, NumberOfDebug: 4, @@ -317,7 +317,7 @@ func TestGithubTokenPermissions(t *testing.T) { filenames: []string{"./testdata/.github/workflows/github-workflow-permissions-run-write-codeql-comment.yaml"}, expected: scut.TestReturn{ Error: nil, - Score: checker.MaxResultScore - 1, + Score: checker.MaxResultScore, NumberOfWarn: 1, NumberOfInfo: 1, NumberOfDebug: 4, @@ -389,6 +389,19 @@ func TestGithubTokenPermissions(t *testing.T) { NumberOfDebug: 5, }, }, + { + name: "don't penalize job-level writes", + filenames: []string{ + "./testdata/.github/workflows/github-workflow-permissions-run-multiple-writes.yaml", + }, + expected: scut.TestReturn{ + Error: nil, + Score: checker.MaxResultScore, + NumberOfWarn: 7, // number of job-level write permissions + NumberOfInfo: 1, // read-only top-level permissions + NumberOfDebug: 4, // This is 4 + (number of actions = 0) + }, + }, } for _, tt := range tests { tt := tt // Re-initializing variable so it is not changed while executing the closure below diff --git a/checks/testdata/.github/workflows/github-workflow-permissions-run-multiple-writes.yaml b/checks/testdata/.github/workflows/github-workflow-permissions-run-multiple-writes.yaml new file mode 100644 index 00000000000..427579485fa --- /dev/null +++ b/checks/testdata/.github/workflows/github-workflow-permissions-run-multiple-writes.yaml @@ -0,0 +1,30 @@ +# Copyright 2021 OpenSSF Scorecard Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +name: write-and-read workflow +on: [push] +permissions: read-all + +jobs: + Explore-GitHub-Actions: + runs-on: ubuntu-latest + permissions: + statuses: write + checks: write + security-events: write + deployments: write + contents: write + packages: write + actions: write + steps: + - run: echo "write-and-read workflow" diff --git a/docs/checks.md b/docs/checks.md index 406bb213f1b..a8aafd8a937 100644 --- a/docs/checks.md +++ b/docs/checks.md @@ -613,13 +613,13 @@ Note: The check does not verify the signatures. Risk: `High` (vulnerable to malicious code additions) -This check determines whether the project's automated workflows tokens are set -to read-only by default. It is currently limited to repositories hosted on -GitHub, and does not support other source hosting repositories (i.e., Forges). +This check determines whether the project's automated workflows tokens follow the +principle of least privilege. This is important because attackers may use a +compromised token with write access to, for example, push malicious code into the +project. -Setting token permissions to read-only follows the principle of least privilege. -This is important because attackers may use a compromised token with write -access to push malicious code into the project. +It is currently limited to repositories hosted on GitHub, and does not support +other source hosting repositories (i.e., Forges). The highest score is awarded when the permissions definitions in each workflow's yaml file are set as read-only at the @@ -630,25 +630,27 @@ One point is reduced from the score if all jobs have their permissions defined b This configuration is secure, but there is a chance that when a new job is added to the workflow, its job permissions could be left undefined because of human error. -The check cannot detect if the "read-only" GitHub permission setting is -enabled, as there is no API available. - -Additionally, points are reduced if certain write permissions are defined for a job. +Though a project's score won't be penalized, the check's details will include +warnings for more sensitive run-level permissions, listed below: -### Write permissions causing a small reduction -* `statuses` - May allow an attacker to change the result of pre-submit checks and get a PR merged. +* `actions` - May allow an attacker to steal GitHub secrets by approving to run an action that needs approval. * `checks` - May allow an attacker to remove pre-submit checks and introduce a bug. -* `security-events` - May allow an attacker to read vulnerability reports before a patch is available. However, points are not reduced if the job utilizes a recognized action for uploading SARIF results. -* `deployments` - May allow an attacker to charge repo owner by triggering VM runs, and tiny chance an attacker can trigger a remote service with code they own if server accepts code/location variables unsanitized. - -### Write permissions causing a large reduction * `contents` - Allows an attacker to commit unreviewed code. However, points are not reduced if the job utilizes a recognized packaging action or command. +* `deployments` - May allow an attacker to charge repo owner by triggering VM runs, and tiny chance an attacker can trigger a remote service with code they own if server accepts code/location variables unsanitized. * `packages` - Allows an attacker to publish packages. However, points are not reduced if the job utilizes a recognized packaging action or command. -* `actions` - May allow an attacker to steal GitHub secrets by approving to run an action that needs approval. +* `security-events` - May allow an attacker to read vulnerability reports before a patch is available. However, points are not reduced if the job utilizes a recognized action for uploading SARIF results. +* `statuses` - May allow an attacker to change the result of pre-submit checks and get a PR merged. + +This compromise makes it clear the maintainer has done what's possible to use those permissions safety, +but allows users to identify that the permissions are used. + +The check cannot detect if the "read-only" GitHub permission setting is +enabled, as there is no API available. **Remediation steps** -- Set permissions as `read-all` or `contents: read` as described in GitHub's [documentation](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#permissions). +- Set top-level permissions as `read-all` or `contents: read` as described in GitHub's [documentation](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#permissions). +- Set any required write permissions at the job-level. Only set the permissions required for that job; do not set `permissions: write-all` at the job level. - To help determine the permissions needed for your workflows, you may use [StepSecurity's online tool](https://app.stepsecurity.io/secureworkflow/) by ticking the "Restrict permissions for GITHUB_TOKEN". You may also tick the "Pin actions to a full length commit SHA" to fix issues found by the Pinned-dependencies check. ## Vulnerabilities diff --git a/docs/checks/internal/checks.yaml b/docs/checks/internal/checks.yaml index 51601c05a55..9233da7a4df 100644 --- a/docs/checks/internal/checks.yaml +++ b/docs/checks/internal/checks.yaml @@ -653,13 +653,13 @@ checks: description: | Risk: `High` (vulnerable to malicious code additions) - This check determines whether the project's automated workflows tokens are set - to read-only by default. It is currently limited to repositories hosted on - GitHub, and does not support other source hosting repositories (i.e., Forges). + This check determines whether the project's automated workflows tokens follow the + principle of least privilege. This is important because attackers may use a + compromised token with write access to, for example, push malicious code into the + project. - Setting token permissions to read-only follows the principle of least privilege. - This is important because attackers may use a compromised token with write - access to push malicious code into the project. + It is currently limited to repositories hosted on GitHub, and does not support + other source hosting repositories (i.e., Forges). The highest score is awarded when the permissions definitions in each workflow's yaml file are set as read-only at the @@ -670,26 +670,30 @@ checks: This configuration is secure, but there is a chance that when a new job is added to the workflow, its job permissions could be left undefined because of human error. - The check cannot detect if the "read-only" GitHub permission setting is - enabled, as there is no API available. - - Additionally, points are reduced if certain write permissions are defined for a job. + Though a project's score won't be penalized, the check's details will include + warnings for more sensitive run-level permissions, listed below: - ### Write permissions causing a small reduction - * `statuses` - May allow an attacker to change the result of pre-submit checks and get a PR merged. + * `actions` - May allow an attacker to steal GitHub secrets by approving to run an action that needs approval. * `checks` - May allow an attacker to remove pre-submit checks and introduce a bug. - * `security-events` - May allow an attacker to read vulnerability reports before a patch is available. However, points are not reduced if the job utilizes a recognized action for uploading SARIF results. - * `deployments` - May allow an attacker to charge repo owner by triggering VM runs, and tiny chance an attacker can trigger a remote service with code they own if server accepts code/location variables unsanitized. - - ### Write permissions causing a large reduction * `contents` - Allows an attacker to commit unreviewed code. However, points are not reduced if the job utilizes a recognized packaging action or command. + * `deployments` - May allow an attacker to charge repo owner by triggering VM runs, and tiny chance an attacker can trigger a remote service with code they own if server accepts code/location variables unsanitized. * `packages` - Allows an attacker to publish packages. However, points are not reduced if the job utilizes a recognized packaging action or command. - * `actions` - May allow an attacker to steal GitHub secrets by approving to run an action that needs approval. + * `security-events` - May allow an attacker to read vulnerability reports before a patch is available. However, points are not reduced if the job utilizes a recognized action for uploading SARIF results. + * `statuses` - May allow an attacker to change the result of pre-submit checks and get a PR merged. + + This compromise makes it clear the maintainer has done what's possible to use those permissions safety, + but allows users to identify that the permissions are used. + + The check cannot detect if the "read-only" GitHub permission setting is + enabled, as there is no API available. remediation: - >- - Set permissions as `read-all` or `contents: read` as described in + Set top-level permissions as `read-all` or `contents: read` as described in GitHub's [documentation](https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#permissions). + - >- + Set any required write permissions at the job-level. Only set the permissions + required for that job; do not set `permissions: write-all` at the job level. - >- To help determine the permissions needed for your workflows, you may use [StepSecurity's online tool](https://app.stepsecurity.io/secureworkflow/) by ticking the "Restrict permissions for GITHUB_TOKEN". You may also tick the "Pin actions to a full length commit SHA" to fix issues found @@ -819,9 +823,9 @@ checks: This check determines whether the webhook defined in the repository has a token configured to authenticate the origins of requests. remediation: - - >- - Check whether your service supports token authentication. - - >- - If there is support for token authentication, set the secret in the webhook configuration. See [Setting up a webhook](https://docs.github.com/en/developers/webhooks-and-events/webhooks/creating-webhooks#setting-up-a-webhook) - - >- - If there is no support for token authentication, consider implementing it by following [these directions](https://docs.github.com/en/developers/webhooks-and-events/webhooks/securing-your-webhooks). + - >- + Check whether your service supports token authentication. + - >- + If there is support for token authentication, set the secret in the webhook configuration. See [Setting up a webhook](https://docs.github.com/en/developers/webhooks-and-events/webhooks/creating-webhooks#setting-up-a-webhook) + - >- + If there is no support for token authentication, consider implementing it by following [these directions](https://docs.github.com/en/developers/webhooks-and-events/webhooks/securing-your-webhooks). From f21d4a9eeb9677392a6cfcd817bc1d51437d7752 Mon Sep 17 00:00:00 2001 From: Eugene Kliuchnikov Date: Fri, 14 Jul 2023 18:09:13 +0200 Subject: [PATCH 060/125] :bug: Fix typo (#3267) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Eugene Kliuchnikov Signed-off-by: André Backman --- checks/sast.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/checks/sast.go b/checks/sast.go index 423767f842e..2aab45c9039 100644 --- a/checks/sast.go +++ b/checks/sast.go @@ -100,7 +100,7 @@ func SAST(c *checker.CheckRequest) checker.CheckResult { Text: getNonCompliantPRMessage(nonCompliantPRs), }) score := checker.AggregateScoresWithWeight(map[int]int{sastScore: sastWeight, codeQlScore: codeQlWeight}) - return checker.CreateResultWithScore(CheckSAST, "SAST tool detected but not run on all commmits", score) + return checker.CreateResultWithScore(CheckSAST, "SAST tool detected but not run on all commits", score) default: return checker.CreateRuntimeErrorResult(CheckSAST, sce.WithMessage(sce.ErrScorecardInternal, "contact team")) } From 7b54c57e554cd21a0028d686d0e901f01fe0cb0a Mon Sep 17 00:00:00 2001 From: Diogo Teles Sant'Anna Date: Sun, 16 Jul 2023 13:27:55 -0300 Subject: [PATCH 061/125] =?UTF-8?q?=F0=9F=93=96=20=20Suggest=20new=20score?= =?UTF-8?q?=20viewer=20on=20badge=20documentation=20(#3268)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs(readme): suggest new score viewer on badge documentation Signed-off-by: Diogo Teles Sant'Anna * docs(readme): add link to ossf blogpost about the badge Signed-off-by: Diogo Teles Sant'Anna * docs: update badge of our own README to the new viewer Signed-off-by: Diogo Teles Sant'Anna --------- Signed-off-by: Diogo Teles Sant'Anna Signed-off-by: André Backman --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 0201b8fbc00..f5e59c76d34 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # OpenSSF Scorecard -[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/ossf/scorecard/badge)](https://api.securityscorecards.dev/projects/github.com/ossf/scorecard) +[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/ossf/scorecard/badge)](https://securityscorecards.dev/viewer/?uri=github.com/ossf/scorecard) [![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/5621/badge)](https://bestpractices.coreinfrastructure.org/projects/5621) ![build](https://github.com/ossf/scorecard/workflows/build/badge.svg?branch=main) ![CodeQL](https://github.com/ossf/scorecard/workflows/CodeQL/badge.svg?branch=main) @@ -154,12 +154,12 @@ in the Scorecard GitHub Action setting. Enabling [`publish_results: true`](https://github.com/ossf/scorecard-action/blob/dd5015aaf9688596b0e6d11e7f24fff566aa366b/action.yaml#L35) in Scorecard GitHub Actions also allows maintainers to display a Scorecard badge on their repository to show off their -hard work. This badge also auto-updates for every change made to the repository. +hard work. This badge also auto-updates for every change made to the repository. See more details on [this OSSF blogpost](https://openssf.org/blog/2022/09/08/show-off-your-security-score-announcing-scorecards-badges/). + To include a badge on your project's repository, simply add the following markdown to your README: ``` -[![OpenSSF -Scorecard](https://api.securityscorecards.dev/projects/github.com/{owner}/{repo}/badge)](https://api.securityscorecards.dev/projects/github.com/{owner}/{repo}) +[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/{owner}/{repo}/badge)](https://securityscorecards.dev/viewer/?uri=github.com/{owner}/{repo}) ``` ### Scorecard Command Line Interface From 498410a624326324eecb579bebc6ece3183c41ca Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 16 Jul 2023 17:46:25 +0000 Subject: [PATCH 062/125] :seedling: Bump tj-actions/changed-files from 37.1.1 to 37.1.2 (#3266) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 37.1.1 to 37.1.2. - [Release notes](https://github.com/tj-actions/changed-files/releases) - [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md) - [Commits](https://github.com/tj-actions/changed-files/compare/1f20fb83f05eabed6e12ba0329edac8b6ec8e207...2a968ff601949c81b47d9c1fdb789b0d25ddeea2) --- updated-dependencies: - dependency-name: tj-actions/changed-files dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: André Backman --- .github/workflows/docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 0ac1adecdef..a41de8eb12c 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -42,7 +42,7 @@ jobs: fetch-depth: 2 # needed to diff changed files - id: files name: Get changed files - uses: tj-actions/changed-files@1f20fb83f05eabed6e12ba0329edac8b6ec8e207 #v37.1.1 + uses: tj-actions/changed-files@2a968ff601949c81b47d9c1fdb789b0d25ddeea2 #v37.1.2 with: files_ignore: '**.md' - id: docs_only_check From a09e57d729f74bc9ffc5306d9558edd8b886d850 Mon Sep 17 00:00:00 2001 From: Naveen <172697+naveensrinivasan@users.noreply.github.com> Date: Mon, 17 Jul 2023 09:31:17 -0500 Subject: [PATCH 063/125] :seedling: Update the cover profile for e2e (#3271) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Update the cover profile for e2e Signed-off-by: naveensrinivasan <172697+naveensrinivasan@users.noreply.github.com> Signed-off-by: André Backman --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 076cc69708a..31a9d0c0297 100644 --- a/Makefile +++ b/Makefile @@ -336,7 +336,7 @@ endif e2e-pat: ## Runs e2e tests. Requires GITHUB_AUTH_TOKEN env var to be set to GitHub personal access token e2e-pat: build-scorecard check-env | $(GINKGO) # Run e2e tests. GITHUB_AUTH_TOKEN with personal access token must be exported to run this - TOKEN_TYPE="PAT" $(GINKGO) --race -p -v -cover -coverprofile=e2e-coverage.out --keep-separate-coverprofiles ./... + TOKEN_TYPE="PAT" $(GINKGO) --race -p -v -coverprofile=e2e-coverage.out -coverpkg=./... -r ./... e2e-gh-token: ## Runs e2e tests. Requires GITHUB_AUTH_TOKEN env var to be set to default GITHUB_TOKEN e2e-gh-token: build-scorecard check-env | $(GINKGO) @@ -450,4 +450,4 @@ cron-github-server-ko: | $(KO) $(KOCACHE_PATH) --tags latest,$(GIT_VERSION),$(GIT_HASH) \ github.com/ossf/scorecard/v4/clients/githubrepo/roundtripper/tokens/server -############################################################################### \ No newline at end of file +############################################################################### From 5c9bdde506ef03a93cdf40c44446d6d46212a1bf Mon Sep 17 00:00:00 2001 From: Naveen <172697+naveensrinivasan@users.noreply.github.com> Date: Mon, 17 Jul 2023 11:06:27 -0500 Subject: [PATCH 064/125] :seedling: Improve e2e workflow tests (#3273) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add e2e test for workflow runs - Retrieve successful runs of the scorecard-analysis.yml workflow Signed-off-by: naveensrinivasan <172697+naveensrinivasan@users.noreply.github.com> Signed-off-by: André Backman --- e2e/workflow_test.go | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 e2e/workflow_test.go diff --git a/e2e/workflow_test.go b/e2e/workflow_test.go new file mode 100644 index 00000000000..b7b37653cff --- /dev/null +++ b/e2e/workflow_test.go @@ -0,0 +1,42 @@ +// Copyright 2023 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package e2e + +import ( + "context" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + + "github.com/ossf/scorecard/v4/clients" + "github.com/ossf/scorecard/v4/clients/githubrepo" +) + +var _ = Describe("E2E TEST:WorkflowRun", func() { + Context("E2E TEST:WorkflowRun", func() { + It("Should return scorecard analysis workflow run", func() { + // using the scorecard repo as an example. The tests repo workflow won't have any runs in the future and + // that is why we are using the scorecard repo. + repo, err := githubrepo.MakeGithubRepo("ossf/scorecard") + Expect(err).Should(BeNil()) + repoClient := githubrepo.CreateGithubRepoClient(context.Background(), logger) + err = repoClient.InitRepo(repo, clients.HeadSHA, 0) + Expect(err).Should(BeNil()) + runs, err := repoClient.ListSuccessfulWorkflowRuns("scorecard-analysis.yml") + Expect(err).Should(BeNil()) + Expect(len(runs)).Should(BeNumerically(">", 0)) + }) + }) +}) From bc290f042d598dd2b7507cadd19e1e90f4e352a6 Mon Sep 17 00:00:00 2001 From: Naveen <172697+naveensrinivasan@users.noreply.github.com> Date: Mon, 17 Jul 2023 12:09:15 -0500 Subject: [PATCH 065/125] :seedling: Excluded dependabot from codecov (#3272) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Exclude dependabot from codecov job in main.yml [.github/workflows/main.yml] - Exclude dependabot from codecov job Signed-off-by: naveensrinivasan <172697+naveensrinivasan@users.noreply.github.com> Signed-off-by: André Backman --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 72a97577a71..9de4cb718e5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -82,7 +82,7 @@ jobs: command: make e2e-pat - name: codecov uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # 2.1.0 - if: ${{ github.event_name != 'pull_request' }} + if: ${{ github.event_name != 'pull_request' || github.actor != 'dependabot[bot]' }} with: files: "*e2e-coverage.out" verbose: true From 4f2eaea640d31ce6b654ecb35a8d8be1c6bca7b4 Mon Sep 17 00:00:00 2001 From: Naveen <172697+naveensrinivasan@users.noreply.github.com> Date: Tue, 18 Jul 2023 11:33:42 -0500 Subject: [PATCH 066/125] :seedling: Increase test coverage for searching commits (#3276) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add an e2e test for searching commits by author - Search commits by author `dependabot[bot]` and expect results Signed-off-by: naveensrinivasan <172697+naveensrinivasan@users.noreply.github.com> Signed-off-by: André Backman --- e2e/searchCommits_test.go | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 e2e/searchCommits_test.go diff --git a/e2e/searchCommits_test.go b/e2e/searchCommits_test.go new file mode 100644 index 00000000000..1d8d8c419f0 --- /dev/null +++ b/e2e/searchCommits_test.go @@ -0,0 +1,40 @@ +// Copyright 2023 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package e2e + +import ( + "context" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + + "github.com/ossf/scorecard/v4/clients" + "github.com/ossf/scorecard/v4/clients/githubrepo" +) + +var _ = Describe("E2E TEST:SearchCommits", func() { + Context("E2E TEST:SearchCommits", func() { + It("Should return commits by dependabot", func() { + repo, err := githubrepo.MakeGithubRepo("ossf/scorecard") + Expect(err).Should(BeNil()) + repoClient := githubrepo.CreateGithubRepoClient(context.Background(), logger) + err = repoClient.InitRepo(repo, clients.HeadSHA, 0) + Expect(err).Should(BeNil()) + commits, err := repoClient.SearchCommits(clients.SearchCommitsOptions{Author: "dependabot[bot]"}) + Expect(err).Should(BeNil()) + Expect(len(commits)).Should(BeNumerically(">", 0)) + }) + }) +}) From 97403395b0e21f2d60df83f7dbe7c974a4f87cd3 Mon Sep 17 00:00:00 2001 From: Gabriela Gutierrez Date: Tue, 18 Jul 2023 17:32:02 +0000 Subject: [PATCH 067/125] :bug: Fix Branch-Protection scoring (#3251) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: Verify if branch is required to be up to date before merge Signed-off-by: Gabriela Gutierrez * docs: Comment tracking GraphQL bug Signed-off-by: Gabriela Gutierrez * fix: Add validation if pointers are not null before accessing the values Signed-off-by: Gabriela Gutierrez * fix: Delete debug log file Signed-off-by: Gabriela Gutierrez --------- Signed-off-by: Gabriela Gutierrez Signed-off-by: André Backman --- clients/githubrepo/branches.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/clients/githubrepo/branches.go b/clients/githubrepo/branches.go index 027ca56be19..00669be373f 100644 --- a/clients/githubrepo/branches.go +++ b/clients/githubrepo/branches.go @@ -190,7 +190,16 @@ func copyAdminSettings(src *branchProtectionRule, dst *clients.BranchProtectionR copyBoolPtr(src.DismissesStaleReviews, &dst.RequiredPullRequestReviews.DismissStaleReviews) if src.RequiresStatusChecks != nil { copyBoolPtr(src.RequiresStatusChecks, &dst.CheckRules.RequiresStatusChecks) - copyBoolPtr(src.RequiresStrictStatusChecks, &dst.CheckRules.UpToDateBeforeMerge) + // TODO(#3255): Update when GitHub GraphQL bug is fixed + // Workaround for GitHub GraphQL bug https://github.com/orgs/community/discussions/59471 + // The setting RequiresStrictStatusChecks should tell if the branch is required + // to be up to date before merge, but it only returns the correct value if + // RequiresStatusChecks is true. If RequiresStatusChecks is false, RequiresStrictStatusChecks + // is wrongly retrieved as true. + if src.RequiresStrictStatusChecks != nil { + upToDateBeforeMerge := *src.RequiresStatusChecks && *src.RequiresStrictStatusChecks + copyBoolPtr(&upToDateBeforeMerge, &dst.CheckRules.UpToDateBeforeMerge) + } } } From 4d8e1e46320e7bad87b97db6c343c4e9a5c1114f Mon Sep 17 00:00:00 2001 From: Spencer Schrock Date: Tue, 18 Jul 2023 14:32:36 -0700 Subject: [PATCH 068/125] :sparkles: scdiff: generate cmd skeleton (#3275) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add scdiff root command Signed-off-by: Spencer Schrock * Add generate boilerplate. Signed-off-by: Spencer Schrock * get rid of init Signed-off-by: Spencer Schrock * read newline delimitted repo file Signed-off-by: Spencer Schrock * Run scorecard and echo results. Signed-off-by: Spencer Schrock * add license Signed-off-by: Spencer Schrock * add basic runner tests. Signed-off-by: Spencer Schrock * Add Runner comment. Signed-off-by: Spencer Schrock * switch to using scorecard logger. Signed-off-by: Spencer Schrock * linter fix Signed-off-by: Spencer Schrock --------- Signed-off-by: Spencer Schrock Signed-off-by: André Backman --- cmd/internal/scdiff/app/format/format.go | 34 +++++++++ cmd/internal/scdiff/app/generate.go | 64 ++++++++++++++++ cmd/internal/scdiff/app/root.go | 35 +++++++++ cmd/internal/scdiff/app/runner/runner.go | 75 +++++++++++++++++++ cmd/internal/scdiff/app/runner/runner_test.go | 54 +++++++++++++ cmd/internal/scdiff/main.go | 21 ++++++ 6 files changed, 283 insertions(+) create mode 100644 cmd/internal/scdiff/app/format/format.go create mode 100644 cmd/internal/scdiff/app/generate.go create mode 100644 cmd/internal/scdiff/app/root.go create mode 100644 cmd/internal/scdiff/app/runner/runner.go create mode 100644 cmd/internal/scdiff/app/runner/runner_test.go create mode 100644 cmd/internal/scdiff/main.go diff --git a/cmd/internal/scdiff/app/format/format.go b/cmd/internal/scdiff/app/format/format.go new file mode 100644 index 00000000000..cbcd327d3bc --- /dev/null +++ b/cmd/internal/scdiff/app/format/format.go @@ -0,0 +1,34 @@ +// Copyright 2023 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package format + +import ( + "os" + + "github.com/ossf/scorecard/v4/docs/checks" + "github.com/ossf/scorecard/v4/log" + "github.com/ossf/scorecard/v4/pkg" +) + +//nolint:wrapcheck +func JSON(r *pkg.ScorecardResult) error { + const details = true + docs, err := checks.Read() + if err != nil { + return err + } + // TODO standardize the input, and output it to a file + return r.AsJSON2(details, log.DefaultLevel, docs, os.Stdout) +} diff --git a/cmd/internal/scdiff/app/generate.go b/cmd/internal/scdiff/app/generate.go new file mode 100644 index 00000000000..098ebead248 --- /dev/null +++ b/cmd/internal/scdiff/app/generate.go @@ -0,0 +1,64 @@ +// Copyright 2023 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package app + +import ( + "bufio" + "fmt" + "os" + + "github.com/spf13/cobra" + + "github.com/ossf/scorecard/v4/cmd/internal/scdiff/app/format" + "github.com/ossf/scorecard/v4/cmd/internal/scdiff/app/runner" +) + +//nolint:gochecknoinits // common for cobra apps +func init() { + rootCmd.AddCommand(generateCmd) + generateCmd.PersistentFlags().StringVarP(&repoFile, "repos", "r", "", "path to newline-delimited repo file") +} + +var ( + repoFile string + + generateCmd = &cobra.Command{ + Use: "generate [flags] repofile", + Short: "Generate Scorecard results for diffing", + Long: `Generate Scorecard results for diffing`, + RunE: func(cmd *cobra.Command, args []string) error { + f, err := os.Open(repoFile) + if err != nil { + return fmt.Errorf("unable to open repo file: %w", err) + } + scorecardRunner := runner.New() + scanner := bufio.NewScanner(f) + for scanner.Scan() { + results, err := scorecardRunner.Run(scanner.Text()) + if err != nil { + return fmt.Errorf("running scorecard on %s: %w", scanner.Text(), err) + } + err = format.JSON(&results) + if err != nil { + return fmt.Errorf("formatting results: %w", err) + } + } + if err := scanner.Err(); err != nil { + return fmt.Errorf("reading repo file: %w", err) + } + return nil + }, + } +) diff --git a/cmd/internal/scdiff/app/root.go b/cmd/internal/scdiff/app/root.go new file mode 100644 index 00000000000..aa9cfc3a532 --- /dev/null +++ b/cmd/internal/scdiff/app/root.go @@ -0,0 +1,35 @@ +// Copyright 2023 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package app + +import ( + "fmt" + "os" + + "github.com/spf13/cobra" +) + +var rootCmd = &cobra.Command{ + Use: "scdiff", + Short: "Scorecard Diff", + Long: `Scorecard result diffing command line interface tool`, +} + +func Execute() { + if err := rootCmd.Execute(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} diff --git a/cmd/internal/scdiff/app/runner/runner.go b/cmd/internal/scdiff/app/runner/runner.go new file mode 100644 index 00000000000..4a65e1f7a51 --- /dev/null +++ b/cmd/internal/scdiff/app/runner/runner.go @@ -0,0 +1,75 @@ +// Copyright 2023 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package runner + +import ( + "context" + + "github.com/ossf/scorecard/v4/checker" + "github.com/ossf/scorecard/v4/checks" + "github.com/ossf/scorecard/v4/clients" + "github.com/ossf/scorecard/v4/clients/githubrepo" + "github.com/ossf/scorecard/v4/clients/ossfuzz" + "github.com/ossf/scorecard/v4/log" + "github.com/ossf/scorecard/v4/pkg" +) + +const ( + commit = clients.HeadSHA + commitDepth = 0 // default +) + +// Runner holds the clients and configuration needed to run Scorecard on multiple repos. +type Runner struct { + ctx context.Context + logger *log.Logger + enabledChecks checker.CheckNameToFnMap + repoClient clients.RepoClient + ossFuzz clients.RepoClient + cii clients.CIIBestPracticesClient + vuln clients.VulnerabilitiesClient +} + +func New() Runner { + ctx := context.Background() + logger := log.NewLogger(log.DefaultLevel) + return Runner{ + ctx: ctx, + logger: logger, + repoClient: githubrepo.CreateGithubRepoClient(ctx, logger), + ossFuzz: ossfuzz.CreateOSSFuzzClient(ossfuzz.StatusURL), + cii: clients.DefaultCIIBestPracticesClient(), + vuln: clients.DefaultVulnerabilitiesClient(), + enabledChecks: checks.GetAll(), + } +} + +//nolint:wrapcheck +func (r *Runner) Run(repoURI string) (pkg.ScorecardResult, error) { + r.log("processing repo: " + repoURI) + // TODO (gitlab?) + repo, err := githubrepo.MakeGithubRepo(repoURI) + if err != nil { + return pkg.ScorecardResult{}, err + } + return pkg.RunScorecard(r.ctx, repo, commit, commitDepth, r.enabledChecks, r.repoClient, r.ossFuzz, r.cii, r.vuln) +} + +// logs only if logger is set. +func (r *Runner) log(msg string) { + if r.logger != nil { + r.logger.Info(msg) + } +} diff --git a/cmd/internal/scdiff/app/runner/runner_test.go b/cmd/internal/scdiff/app/runner/runner_test.go new file mode 100644 index 00000000000..8d44ce10345 --- /dev/null +++ b/cmd/internal/scdiff/app/runner/runner_test.go @@ -0,0 +1,54 @@ +// Copyright 2023 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package runner + +import ( + "testing" + + "github.com/golang/mock/gomock" + + "github.com/ossf/scorecard/v4/checker" + "github.com/ossf/scorecard/v4/clients" + mockrepo "github.com/ossf/scorecard/v4/clients/mockclients" +) + +func TestNew(t *testing.T) { + r := New() + if len(r.enabledChecks) == 0 { + t.Errorf("runner has no checks to run: %v", r.enabledChecks) + } +} + +func TestRunner_Run(t *testing.T) { + ctrl := gomock.NewController(t) + mockRepo := mockrepo.NewMockRepoClient(ctrl) + commit := []clients.Commit{{SHA: "foo"}} + mockRepo.EXPECT().ListCommits().Return(commit, nil) + mockRepo.EXPECT().InitRepo(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) + mockRepo.EXPECT().GetDefaultBranchName().Return("main", nil) + mockRepo.EXPECT().Close().Return(nil) + r := Runner{ + enabledChecks: checker.CheckNameToFnMap{}, + repoClient: mockRepo, + } + const repo = "github.com/foo/bar" + result, err := r.Run(repo) + if err != nil { + t.Errorf("unexpected test error: %v", err) + } + if result.Repo.Name != repo { + t.Errorf("got: %v, wanted: %v", result.Repo.Name, repo) + } +} diff --git a/cmd/internal/scdiff/main.go b/cmd/internal/scdiff/main.go new file mode 100644 index 00000000000..267d6fe181a --- /dev/null +++ b/cmd/internal/scdiff/main.go @@ -0,0 +1,21 @@ +// Copyright 2023 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package main + +import "github.com/ossf/scorecard/v4/cmd/internal/scdiff/app" + +func main() { + app.Execute() +} From b0c125c88184959f623798f5e8fef7afbf3afd40 Mon Sep 17 00:00:00 2001 From: Spencer Schrock Date: Tue, 18 Jul 2023 14:58:19 -0700 Subject: [PATCH 069/125] :seedling: Delete unused project-update functionality. (#3269) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Spencer Schrock Signed-off-by: André Backman --- .github/workflows/main.yml | 48 ----- .gitignore | 1 - Makefile | 8 +- cron/internal/data/update/dependency.go | 243 ------------------------ cron/internal/data/update/main.go | 56 ------ go.mod | 1 - go.sum | 2 - 7 files changed, 1 insertion(+), 358 deletions(-) delete mode 100644 cron/internal/data/update/dependency.go delete mode 100644 cron/internal/data/update/main.go diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9de4cb718e5..bfbb85e2630 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -696,54 +696,6 @@ jobs: command: | go env -w GOFLAGS=-mod=mod make build-validate-script - build-update-script: - name: build-update-script - runs-on: ubuntu-latest - needs: build-proto - permissions: - contents: read - steps: - - name: Harden Runner - uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v1 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - name: Install Protoc - uses: arduino/setup-protoc@149f6c87b92550901b26acd1632e11c3662e381f # v1.3.0 - with: - version: ${{ env.PROTOC_VERSION }} - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Cache builds - # https://github.com/mvdan/github-actions-golang#how-do-i-set-up-caching-between-builds - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 - with: - path: | - ~/go/pkg/mod - ~/.cache/go-build - ~/Library/Caches/go-build - %LocalAppData%\go-build - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - name: Clone the code - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v2.3.4 - with: - fetch-depth: 0 - - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v2.2.0 - with: - go-version: ${{ env.GO_VERSION }} - check-latest: true - cache: true - - name: build-validate-script - uses: nick-invision/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd - with: - max_attempts: 3 - retry_on: error - timeout_minutes: 30 - command: | - go env -w GOFLAGS=-mod=mod - make build-update-script validate-docs: name: validate-docs runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index d67e51d87dc..8c8cf9eba59 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,6 @@ clients/githubrepo/roundtripper/tokens/server/github-auth-server clients/githubrepo/roundtripper/tokens/server/github-auth-server.docker cron/internal/data/add/add cron/internal/data/validate/validate -cron/internal/data/update/projects-update cron/internal/controller/controller cron/internal/controller/controller.docker cron/internal/worker/worker diff --git a/Makefile b/Makefile index 31a9d0c0297..720cdcca426 100644 --- a/Makefile +++ b/Makefile @@ -120,7 +120,7 @@ tree-status: | all-targets-update-dependencies ## Verify tree is clean and all c ## Build all cron-related targets build-cron: build-controller build-worker build-cii-worker \ build-shuffler build-bq-transfer build-github-server \ - build-webhook build-add-script build-validate-script build-update-script + build-webhook build-add-script build-validate-script build-targets = generate-mocks generate-docs build-scorecard build-cron build-proto build-attestor .PHONY: build $(build-targets) @@ -295,12 +295,6 @@ cron/internal/data/validate/validate: cron/internal/data/validate/*.go cron/data # Run go build on the validate script cd cron/internal/data/validate && CGO_ENABLED=0 go build -trimpath -a -ldflags '$(LDFLAGS)' -o validate -build-update-script: ## Runs go build on the update script -build-update-script: cron/internal/data/update/projects-update -cron/internal/data/update/projects-update: cron/internal/data/update/*.go cron/data/*.go - # Run go build on the update script - cd cron/internal/data/update && CGO_ENABLED=0 go build -trimpath -a -tags netgo -ldflags '$(LDFLAGS)' -o projects-update - docker-targets = scorecard-docker cron-controller-docker cron-worker-docker cron-cii-worker-docker cron-bq-transfer-docker cron-webhook-docker cron-github-server-docker .PHONY: dockerbuild $(docker-targets) dockerbuild: $(docker-targets) diff --git a/cron/internal/data/update/dependency.go b/cron/internal/data/update/dependency.go deleted file mode 100644 index e0757aad033..00000000000 --- a/cron/internal/data/update/dependency.go +++ /dev/null @@ -1,243 +0,0 @@ -// Copyright 2021 OpenSSF Scorecard Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package main - -import ( - "bytes" - "context" - "fmt" - "io" - "log" - "os" - "os/exec" - "regexp" - "strings" - - "github.com/go-git/go-git/v5" - "github.com/google/go-github/v38/github" - "golang.org/x/tools/go/vcs" //nolint:staticcheck // TODO(https://github.com/ossf/scorecard/issues/3262) - - "github.com/ossf/scorecard/v4/clients/githubrepo" - "github.com/ossf/scorecard/v4/cron/data" -) - -var ( - // TODO = move them outside the sourcecode. - bazelRepos = []repositoryDepsURL{ - { - Owner: "envoyproxy", - Repo: "envoy", - File: "bazel/repository_locations.bzl", - }, - { - Owner: "envoyproxy", - Repo: "envoy", - File: "api/bazel/repository_locations.bzl", - }, - { - Owner: "grpc", - Repo: "grpc", - File: "bazel/grpc_deps.bzl", - }, - } - // TODO = move them outside the sourcecode. - gorepos = []repositoryDepsURL{ - { - Owner: "ossf", - Repo: "scorecard", - }, - { - Owner: "sigstore", - Repo: "cosign", - }, - { - Owner: "kubernetes", - Repo: "kubernetes", - Vendor: true, - }, - } -) - -type repositoryDepsURL struct { - Owner, Repo, File string - Vendor bool -} - -// Programmatically gets Envoy's dependencies and add to projects. -// Re-using a checker type. -func getBazelDeps(repo repositoryDepsURL) []data.RepoFormat { - client := github.NewClient(nil) - ctx := context.Background() - depRepos := []data.RepoFormat{} - fo, _, _, err := client.Repositories.GetContents(ctx, repo.Owner, repo.Repo, repo.File, nil) - if err != nil { - // If we can't get content, gracefully fail but alert. - log.Panicf("Failed to get repository content %s", err) - return depRepos - } - - fc, err := fo.GetContent() - if err != nil { - // If we can't get content, gracefully fail, but alert. - log.Panicf("Failed to get repository content %s", err) - return depRepos - } - - // Match all patterns of github.com/{}/{}. - re := regexp.MustCompile(`github\\.com/[^\/]*/[^\/"]*`) - - // TODO: Replace with a starlark interpreter that can be used for any project. - for _, match := range re.FindAllString(fc, -1) { - repo := data.RepoFormat{} - repo.Repo = strings.TrimSuffix(match, ".git") - if _, err := githubrepo.MakeGithubRepo(repo.Repo); err != nil { - log.Panicf("error during repo.Set: %v", err) - return depRepos - } - depRepos = append(depRepos, repo) - } - return depRepos -} - -// GetGoDeps returns go repo dependencies. -func getGoDeps(repo repositoryDepsURL) []data.RepoFormat { - repoURLs := []data.RepoFormat{} - pwd, err := os.Getwd() - if err != nil { - log.Default().Println(err) - return nil - } - //nolint - defer os.Chdir(pwd) - // creating temp dir for git clone - gitDir, err := os.MkdirTemp(pwd, "") - if err != nil { - log.Default().Println("Cannot create temporary dir", err) - return nil - } - defer os.RemoveAll(gitDir) - - // cloning git repo to get `go list -m all` out for getting all the dependencies - _, err = git.PlainClone(gitDir, false, - &git.CloneOptions{URL: fmt.Sprintf("http://github.com/%s/%s", repo.Owner, repo.Repo)}) - if err != nil { - log.Default().Println(err) - return nil - } - - if err := os.Chdir(gitDir); err != nil { - log.Default().Println(err) - return nil - } - - var cmd *exec.Cmd - if repo.Vendor { - cmd = exec.Command("go", "list", "-e", "mod=vendor", "all") - } else { - cmd = exec.Command("go", "list", "-m", "all") - } - var out bytes.Buffer - cmd.Stdout = &out - err = cmd.Run() - if err != nil { - log.Default().Println(err) - return nil - } - - /* - example output of go list -m all - gopkg.in/resty.v1 v1.12.0 - gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 - */ - for _, l := range strings.Split(out.String(), "\n") { - dependency := strings.Split(l, " ")[0] - if strings.HasPrefix(dependency, "github.com") { - repoURLs = parseGoModURL(dependency, repoURLs) - } else { - dependency = getVanityRepoURL(dependency) - repoURLs = parseGoModURL(dependency, repoURLs) - } - } - return repoURLs -} - -// getVanityRepoURL returns actual git repository for the go vanity URL -// https://github.com/GoogleCloudPlatform/govanityurls. -func getVanityRepoURL(u string) string { - repo, err := vcs.RepoRootForImportDynamic(u, false) - if err != nil { - log.Default().Println("unable to parse the vanity URL", u, err) - return "" - } - return repo.Repo -} - -func parseGoModURL(dependency string, repoURLs []data.RepoFormat) []data.RepoFormat { - repoURL := data.RepoFormat{} - splitURL := strings.Split(dependency, "/") - //nolint:gomnd - if len(splitURL) < 3 { - return repoURLs - } - u := fmt.Sprintf("%s/%s/%s", splitURL[0], splitURL[1], splitURL[2]) - if _, err := githubrepo.MakeGithubRepo(u); err != nil { - return repoURLs - } - repoURL.Repo = u - repoURLs = append(repoURLs, repoURL) - return repoURLs -} - -func getDependencies(in io.Reader) (oldRepos, newRepos []data.RepoFormat, e error) { - iter, err := data.MakeIteratorFrom(in) - if err != nil { - return nil, nil, fmt.Errorf("error during data.MakeIterator: %w", err) - } - - // Read all project repositores into a map. - m := make(map[string][]string) - oldRepos = make([]data.RepoFormat, 0) - for iter.HasNext() { - repo, err := iter.Next() - if err != nil { - return nil, nil, fmt.Errorf("error during iter.Next: %w", err) - } - oldRepos = append(oldRepos, repo) - // We do not handle duplicates. - m[repo.Repo] = repo.Metadata - } - - // Create a list of project dependencies that are not already present. - newRepos = []data.RepoFormat{} - for _, repo := range bazelRepos { - for _, item := range getBazelDeps(repo) { - if _, ok := m[item.Repo]; !ok { - // Also add to m to avoid dupes. - m[item.Repo] = item.Metadata - newRepos = append(newRepos, item) - } - } - } - for _, repo := range gorepos { - for _, item := range getGoDeps(repo) { - if _, ok := m[item.Repo]; !ok { - // Also add to m to avoid dupes. - m[item.Repo] = item.Metadata - newRepos = append(newRepos, item) - } - } - } - return oldRepos, newRepos, nil -} diff --git a/cron/internal/data/update/main.go b/cron/internal/data/update/main.go deleted file mode 100644 index e1d03b592b7..00000000000 --- a/cron/internal/data/update/main.go +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2021 OpenSSF Scorecard Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package main updates projects repositories with a projects dependencies. -package main - -import ( - "bytes" - "os" - - "github.com/ossf/scorecard/v4/cron/data" -) - -// Adds "project=${PROJECT},dependency=true" to the repositories metadata. -// Args: -// -// file path to old_projects.csv new_projects.csv -func main() { - if len(os.Args) != 3 { - panic("must provide 2 arguments") - } - - inFile, err := os.OpenFile(os.Args[1], os.O_RDONLY, 0o644) - if err != nil { - panic(err) - } - defer inFile.Close() - oldRepos, newRepos, err := getDependencies(inFile) - if err != nil { - panic(err) - } - - var buf bytes.Buffer - if err := data.SortAndAppendTo(&buf, oldRepos, newRepos); err != nil { - panic(err) - } - - projects, err := os.OpenFile(os.Args[2], os.O_CREATE|os.O_WRONLY, 0o644) - if err != nil { - panic(err) - } - if _, err := projects.Write(buf.Bytes()); err != nil { - panic(err) - } -} diff --git a/go.mod b/go.mod index 6b2406fcf78..72391249b8a 100644 --- a/go.mod +++ b/go.mod @@ -51,7 +51,6 @@ require ( github.com/mcuadros/go-jsonschema-generator v0.0.0-20200330054847-ba7a369d4303 github.com/onsi/ginkgo/v2 v2.11.0 github.com/otiai10/copy v1.12.0 - golang.org/x/tools/go/vcs v0.1.0-deprecated sigs.k8s.io/release-utils v0.6.0 ) diff --git a/go.sum b/go.sum index 8010cb9abef..82350d32a71 100644 --- a/go.sum +++ b/go.sum @@ -2990,8 +2990,6 @@ golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= golang.org/x/tools v0.11.0 h1:EMCa6U9S2LtZXLAMoWiR/R8dAQFRqbAitmbJ2UKhoi8= golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= -golang.org/x/tools/go/vcs v0.1.0-deprecated h1:cOIJqWBl99H1dH5LWizPa+0ImeeJq3t3cJjaeOWUAL4= -golang.org/x/tools/go/vcs v0.1.0-deprecated/go.mod h1:zUrvATBAvEI9535oC0yWYsLsHIV4Z7g63sNPVMtuBy8= golang.org/x/vuln v0.0.0-20230303230808-d3042fecc4e3 h1:9GJsAwSzB/ztwMwsEm3ihUgCXHCULbNsubxqIrdKa44= golang.org/x/vuln v0.0.0-20230303230808-d3042fecc4e3/go.mod h1:LTLnfk/dpXDNKsX6aCg/cI4LyCVnTyrQhgV/yLJuly0= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 4662f01c3935c470cb9e26863ffe9583b8676c0c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Jul 2023 10:37:45 -0500 Subject: [PATCH 070/125] :seedling: Bump tj-actions/changed-files from 37.1.2 to 37.3.0 (#3280) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 37.1.2 to 37.3.0. - [Release notes](https://github.com/tj-actions/changed-files/releases) - [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md) - [Commits](https://github.com/tj-actions/changed-files/compare/2a968ff601949c81b47d9c1fdb789b0d25ddeea2...39283171cefdf491e0f0d6cf285b86b31eb6f3cd) --- updated-dependencies: - dependency-name: tj-actions/changed-files dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: André Backman --- .github/workflows/docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index a41de8eb12c..9ae8533b3f7 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -42,7 +42,7 @@ jobs: fetch-depth: 2 # needed to diff changed files - id: files name: Get changed files - uses: tj-actions/changed-files@2a968ff601949c81b47d9c1fdb789b0d25ddeea2 #v37.1.2 + uses: tj-actions/changed-files@39283171cefdf491e0f0d6cf285b86b31eb6f3cd #v37.3.0 with: files_ignore: '**.md' - id: docs_only_check From 6c6b8aca8601a735d58bd243b010ec34beb754ee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Jul 2023 15:48:18 +0000 Subject: [PATCH 071/125] :seedling: Bump github.com/google/osv-scanner from 1.3.5 to 1.3.6 (#3281) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [github.com/google/osv-scanner](https://github.com/google/osv-scanner) from 1.3.5 to 1.3.6. - [Release notes](https://github.com/google/osv-scanner/releases) - [Changelog](https://github.com/google/osv-scanner/blob/main/CHANGELOG.md) - [Commits](https://github.com/google/osv-scanner/compare/v1.3.5...v1.3.6) --- updated-dependencies: - dependency-name: github.com/google/osv-scanner dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: André Backman --- go.mod | 6 +++--- go.sum | 15 ++++++--------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 72391249b8a..9b2e03a0325 100644 --- a/go.mod +++ b/go.mod @@ -47,7 +47,7 @@ require ( github.com/Masterminds/semver/v3 v3.2.1 github.com/caarlos0/env/v6 v6.10.0 github.com/gobwas/glob v0.2.3 - github.com/google/osv-scanner v1.3.5 + github.com/google/osv-scanner v1.3.6 github.com/mcuadros/go-jsonschema-generator v0.0.0-20200330054847-ba7a369d4303 github.com/onsi/ginkgo/v2 v2.11.0 github.com/otiai10/copy v1.12.0 @@ -107,7 +107,7 @@ require ( golang.org/x/mod v0.12.0 // indirect golang.org/x/term v0.10.0 // indirect golang.org/x/time v0.3.0 // indirect - golang.org/x/vuln v0.0.0-20230303230808-d3042fecc4e3 // indirect + golang.org/x/vuln v1.0.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc // indirect gopkg.in/inf.v0 v0.9.1 // indirect @@ -174,7 +174,7 @@ require ( github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect golang.org/x/crypto v0.11.0 // indirect - golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 + golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df golang.org/x/net v0.12.0 // indirect golang.org/x/oauth2 v0.10.0 golang.org/x/sync v0.3.0 // indirect diff --git a/go.sum b/go.sum index 82350d32a71..2e2940245ca 100644 --- a/go.sum +++ b/go.sum @@ -925,7 +925,6 @@ github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2u github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng= -github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= @@ -1466,8 +1465,8 @@ github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIG github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/osv-scanner v1.3.5 h1:c0Qysr565PEWouwm48QEY5GyS3tfgcT4aKqjOUTqGqU= -github.com/google/osv-scanner v1.3.5/go.mod h1:4SNp5Uz1X4tFjBecqtTV/3KcmCBRaQ3haUMAJuD1ij0= +github.com/google/osv-scanner v1.3.6 h1:8oZxk2HfdMjsLZ/NIidEEb2srcIP8301hKbR+FPXaPo= +github.com/google/osv-scanner v1.3.6/go.mod h1:Yl29UCfOjWRA/wQLmvK0Ehs7HztmRqtgvHa3SomAJFo= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -2481,8 +2480,8 @@ golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMk golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= golang.org/x/exp v0.0.0-20230108222341-4b8118a2686a/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= -golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 h1:k/i9J1pBpvlfR+9QsetwPyERsqu1GIbi967PQMq3Ivc= -golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= +golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df h1:UA2aFVmmsIlefxMk29Dp2juaUSth8Pyn3Tq5Y5mJGME= +golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -2990,8 +2989,8 @@ golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= golang.org/x/tools v0.11.0 h1:EMCa6U9S2LtZXLAMoWiR/R8dAQFRqbAitmbJ2UKhoi8= golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= -golang.org/x/vuln v0.0.0-20230303230808-d3042fecc4e3 h1:9GJsAwSzB/ztwMwsEm3ihUgCXHCULbNsubxqIrdKa44= -golang.org/x/vuln v0.0.0-20230303230808-d3042fecc4e3/go.mod h1:LTLnfk/dpXDNKsX6aCg/cI4LyCVnTyrQhgV/yLJuly0= +golang.org/x/vuln v1.0.0 h1:tYLAU3jD9LQr98Y+3el06lWyGMCnvzw06PIWP3LIy7g= +golang.org/x/vuln v1.0.0/go.mod h1:V0eyhHwaAaHrt42J9bgrN6rd12f6GU4T0Lu0ex2wDg4= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -3387,7 +3386,6 @@ honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= -honnef.co/go/tools v0.2.2 h1:MNh1AVMyVX23VUHE2O27jm6lNj3vjO5DexS4A1xvnzk= k8s.io/api v0.18.8/go.mod h1:d/CXqwWv+Z2XEG1LgceeDmHQwpUJhROPx16SlxJgERY= k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= @@ -3513,7 +3511,6 @@ modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= mvdan.cc/sh/v3 v3.7.0 h1:lSTjdP/1xsddtaKfGg7Myu7DnlHItd3/M2tomOcNNBg= mvdan.cc/sh/v3 v3.7.0/go.mod h1:K2gwkaesF/D7av7Kxl0HbF5kGOd2ArupNTX3X44+8l8= -mvdan.cc/unparam v0.0.0-20211214103731-d0ef000c54e5 h1:Jh3LAeMt1eGpxomyu3jVkmVZWW2MxZ1qIIV2TZ/nRio= nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= From 9c9bf4a3b4df0d7ba5d7a92b67dffba76197141c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Jul 2023 09:20:31 -0500 Subject: [PATCH 072/125] :seedling: Bump gocloud.dev from 0.30.0 to 0.32.0 (#3284) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [gocloud.dev](https://github.com/google/go-cloud) from 0.30.0 to 0.32.0. - [Release notes](https://github.com/google/go-cloud/releases) - [Commits](https://github.com/google/go-cloud/compare/v0.30.0...v0.32.0) --- updated-dependencies: - dependency-name: gocloud.dev dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: André Backman --- go.mod | 42 +- go.sum | 2426 ++------------------------------------------------------ 2 files changed, 82 insertions(+), 2386 deletions(-) diff --git a/go.mod b/go.mod index 9b2e03a0325..969d91c3788 100644 --- a/go.mod +++ b/go.mod @@ -9,9 +9,9 @@ require ( require ( cloud.google.com/go/bigquery v1.52.0 - cloud.google.com/go/monitoring v1.15.0 // indirect + cloud.google.com/go/monitoring v1.15.1 // indirect cloud.google.com/go/pubsub v1.32.0 - cloud.google.com/go/trace v1.10.0 // indirect + cloud.google.com/go/trace v1.10.1 // indirect contrib.go.opencensus.io/exporter/stackdriver v0.13.14 github.com/bombsimon/logrusr/v2 v2.0.1 github.com/bradleyfalzon/ghinstallation/v2 v2.6.0 @@ -33,10 +33,10 @@ require ( github.com/spf13/cobra v1.7.0 github.com/xeipuuv/gojsonschema v1.2.0 go.opencensus.io v0.24.0 - gocloud.dev v0.30.0 + gocloud.dev v0.32.0 golang.org/x/text v0.11.0 golang.org/x/tools v0.11.0 // indirect - google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc // indirect + google.golang.org/genproto v0.0.0-20230717213848-3f92550aa753 // indirect google.golang.org/protobuf v1.31.0 gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.1 @@ -56,8 +56,8 @@ require ( require ( cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/containeranalysis v0.9.0 // indirect - cloud.google.com/go/kms v1.12.0 // indirect + cloud.google.com/go/containeranalysis v0.10.1 // indirect + cloud.google.com/go/kms v1.14.0 // indirect github.com/BurntSushi/toml v1.3.2 // indirect github.com/CycloneDX/cyclonedx-go v0.7.1 // indirect github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 // indirect @@ -81,7 +81,7 @@ require ( github.com/google/gnostic v0.6.9 // indirect github.com/google/go-github/v53 v53.2.0 // indirect github.com/google/gofuzz v1.2.0 // indirect - github.com/google/pprof v0.0.0-20230406165453-00490a63f317 // indirect + github.com/google/pprof v0.0.0-20230602150820-91b7bce49751 // indirect github.com/google/s2a-go v0.1.4 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-retryablehttp v0.7.2 // indirect @@ -99,7 +99,7 @@ require ( github.com/package-url/packageurl-go v0.1.1 // indirect github.com/pierrec/lz4/v4 v4.1.15 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect - github.com/prometheus/prometheus v0.44.0 // indirect + github.com/prometheus/prometheus v0.45.0 // indirect github.com/skeema/knownhosts v1.1.1 // indirect github.com/spdx/gordf v0.0.0-20221230105357-b735bd5aac89 // indirect github.com/spdx/tools-golang v0.5.2 // indirect @@ -108,14 +108,14 @@ require ( golang.org/x/term v0.10.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/vuln v1.0.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230717213848-3f92550aa753 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230717213848-3f92550aa753 // indirect gopkg.in/inf.v0 v0.9.1 // indirect k8s.io/api v0.26.2 // indirect k8s.io/apimachinery v0.26.2 // indirect k8s.io/client-go v0.26.2 // indirect - k8s.io/klog/v2 v2.90.1 // indirect - k8s.io/kube-openapi v0.0.0-20230303024457-afdc3dddf62d // indirect + k8s.io/klog/v2 v2.100.1 // indirect + k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f // indirect k8s.io/utils v0.0.0-20230308161112-d77c459e9343 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect @@ -123,20 +123,20 @@ require ( ) require ( - cloud.google.com/go v0.110.2 // indirect - cloud.google.com/go/compute v1.20.1 // indirect - cloud.google.com/go/iam v1.1.0 // indirect - cloud.google.com/go/storage v1.30.1 // indirect + cloud.google.com/go v0.110.6 // indirect + cloud.google.com/go/compute v1.22.0 // indirect + cloud.google.com/go/iam v1.1.1 // indirect + cloud.google.com/go/storage v1.31.0 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903 // indirect github.com/acomagu/bufpipe v1.0.4 // indirect - github.com/aws/aws-sdk-go v1.44.284 // indirect + github.com/aws/aws-sdk-go v1.44.303 // indirect github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be // indirect github.com/containerd/stargz-snapshotter/estargz v0.14.3 // indirect github.com/docker/cli v24.0.2+incompatible // indirect github.com/docker/distribution v2.8.2+incompatible // indirect - github.com/docker/docker v24.0.0-rc.2.0.20230706181717-98d3da79ef9c+incompatible // indirect + github.com/docker/docker v24.0.2+incompatible // indirect github.com/docker/docker-credential-helpers v0.7.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/fatih/color v1.14.1 // indirect @@ -150,7 +150,7 @@ require ( github.com/google/uuid v1.3.0 // indirect github.com/google/wire v0.5.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.5 // indirect - github.com/googleapis/gax-go/v2 v2.11.0 // indirect + github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/imdario/mergo v0.3.15 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect @@ -180,9 +180,9 @@ require ( golang.org/x/sync v0.3.0 // indirect golang.org/x/sys v0.10.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect - google.golang.org/api v0.128.0 // indirect + google.golang.org/api v0.132.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/grpc v1.56.0 // indirect + google.golang.org/grpc v1.56.2 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect ) diff --git a/go.sum b/go.sum index 2e2940245ca..9c3659fb434 100644 --- a/go.sum +++ b/go.sum @@ -1,716 +1,80 @@ -bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= -bazil.org/fuse v0.0.0-20200407214033-5883e5a4b512/go.mod h1:FbcW6z/2VytnFDhZfumh8Ss8zxHE6qpMP5sHTRe0EaM= 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.44.3/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.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.82.0/go.mod h1:vlKccHJGuFBFufnAnuB08dfEH9Y3H7dzDzRECFdC2TA= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= -cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= -cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= -cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= -cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= -cloud.google.com/go v0.110.2 h1:sdFPBr6xG9/wkBbfhmUz/JmZC7X6LavQgcrVINrKiVA= -cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVquxiw= -cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= -cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= -cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E= -cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= -cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= -cloud.google.com/go/accesscontextmanager v1.6.0/go.mod h1:8XCvZWfYw3K/ji0iVnp+6pu7huxoQTLmxAbVjbloTtM= -cloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ= -cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= -cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= -cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg= -cloud.google.com/go/aiplatform v1.35.0/go.mod h1:7MFT/vCaOyZT/4IIFfxH4ErVg/4ku6lKv3w0+tFTgXQ= -cloud.google.com/go/aiplatform v1.36.1/go.mod h1:WTm12vJRPARNvJ+v6P52RDHCNe4AhvjcIZ/9/RRHy/k= -cloud.google.com/go/aiplatform v1.37.0/go.mod h1:IU2Cv29Lv9oCn/9LkFiiuKfwrRTq+QQMbW+hPCxJGZw= -cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= -cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= -cloud.google.com/go/analytics v0.17.0/go.mod h1:WXFa3WSym4IZ+JiKmavYdJwGG/CvpqiqczmL59bTD9M= -cloud.google.com/go/analytics v0.18.0/go.mod h1:ZkeHGQlcIPkw0R/GW+boWHhCOR43xz9RN/jn7WcqfIE= -cloud.google.com/go/analytics v0.19.0/go.mod h1:k8liqf5/HCnOUkbawNtrWWc+UAzyDlW89doe8TtoDsE= -cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= -cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc= -cloud.google.com/go/apigateway v1.5.0/go.mod h1:GpnZR3Q4rR7LVu5951qfXPJCHquZt02jf7xQx7kpqN8= -cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= -cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04= -cloud.google.com/go/apigeeconnect v1.5.0/go.mod h1:KFaCqvBRU6idyhSNyn3vlHXc8VMDJdRmwDF6JyFRqZ8= -cloud.google.com/go/apigeeregistry v0.4.0/go.mod h1:EUG4PGcsZvxOXAdyEghIdXwAEi/4MEaoqLMLDMIwKXY= -cloud.google.com/go/apigeeregistry v0.5.0/go.mod h1:YR5+s0BVNZfVOUkMa5pAR2xGd0A473vA5M7j247o1wM= -cloud.google.com/go/apigeeregistry v0.6.0/go.mod h1:BFNzW7yQVLZ3yj0TKcwzb8n25CFBri51GVGOEUcgQsc= -cloud.google.com/go/apikeys v0.4.0/go.mod h1:XATS/yqZbaBK0HOssf+ALHp8jAlNHUgyfprvNcBIszU= -cloud.google.com/go/apikeys v0.5.0/go.mod h1:5aQfwY4D+ewMMWScd3hm2en3hCj+BROlyrt3ytS7KLI= -cloud.google.com/go/apikeys v0.6.0/go.mod h1:kbpXu5upyiAlGkKrJgQl8A0rKNNJ7dQ377pdroRSSi8= -cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno= -cloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodCWatWI9Dmak= -cloud.google.com/go/appengine v1.6.0/go.mod h1:hg6i0J/BD2cKmDJbaFSYHFyZkgBEfQrDg/X0V5fJn84= -cloud.google.com/go/appengine v1.7.0/go.mod h1:eZqpbHFCqRGa2aCdope7eC0SWLV1j0neb/QnMJVWx6A= -cloud.google.com/go/appengine v1.7.1/go.mod h1:IHLToyb/3fKutRysUlFO0BPt5j7RiQ45nrzEJmKTo6E= -cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= -cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= -cloud.google.com/go/area120 v0.7.0/go.mod h1:a3+8EUD1SX5RUcCs3MY5YasiO1z6yLiNLRiFrykbynY= -cloud.google.com/go/area120 v0.7.1/go.mod h1:j84i4E1RboTWjKtZVWXPqvK5VHQFJRF2c1Nm69pWm9k= -cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= -cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= -cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= -cloud.google.com/go/artifactregistry v1.9.0/go.mod h1:2K2RqvA2CYvAeARHRkLDhMDJ3OXy26h3XW+3/Jh2uYc= -cloud.google.com/go/artifactregistry v1.11.1/go.mod h1:lLYghw+Itq9SONbCa1YWBoWs1nOucMH0pwXN1rOBZFI= -cloud.google.com/go/artifactregistry v1.11.2/go.mod h1:nLZns771ZGAwVLzTX/7Al6R9ehma4WUEhZGWV6CeQNQ= -cloud.google.com/go/artifactregistry v1.12.0/go.mod h1:o6P3MIvtzTOnmvGagO9v/rOjjA0HmhJ+/6KAXrmYDCI= -cloud.google.com/go/artifactregistry v1.13.0/go.mod h1:uy/LNfoOIivepGhooAUpL1i30Hgee3Cu0l4VTWHUC08= -cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= -cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= -cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= -cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ= -cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY= -cloud.google.com/go/asset v1.11.1/go.mod h1:fSwLhbRvC9p9CXQHJ3BgFeQNM4c9x10lqlrdEUYXlJo= -cloud.google.com/go/asset v1.12.0/go.mod h1:h9/sFOa4eDIyKmH6QMpm4eUK3pDojWnUhTgJlk762Hg= -cloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw= -cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= -cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= -cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= -cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= -cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= -cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= -cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= -cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= -cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= -cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM= -cloud.google.com/go/automl v1.12.0/go.mod h1:tWDcHDp86aMIuHmyvjuKeeHEGq76lD7ZqfGLN6B0NuU= -cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= -cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI= -cloud.google.com/go/baremetalsolution v0.5.0/go.mod h1:dXGxEkmR9BMwxhzBhV0AioD0ULBmuLZI8CdwalUxuss= -cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= -cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE= -cloud.google.com/go/batch v0.7.0/go.mod h1:vLZN95s6teRUqRQ4s3RLDsH8PvboqBK+rn1oevL159g= -cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= -cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8= -cloud.google.com/go/beyondcorp v0.4.0/go.mod h1:3ApA0mbhHx6YImmuubf5pyW8srKnCEPON32/5hj+RmM= -cloud.google.com/go/beyondcorp v0.5.0/go.mod h1:uFqj9X+dSfrheVp7ssLTaRHd2EHqSL4QZmH4e8WXGGU= +cloud.google.com/go v0.110.6 h1:8uYAkj3YHTP/1iwReuHPxLSbdcyc+dSBbzFMrVwDR6Q= +cloud.google.com/go v0.110.6/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= 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/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= -cloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw= -cloud.google.com/go/bigquery v1.44.0/go.mod h1:0Y33VqXTEsbamHJvJHdFmtqHvMIY28aK1+dFsvaChGc= -cloud.google.com/go/bigquery v1.47.0/go.mod h1:sA9XOgy0A8vQK9+MWhEQTY6Tix87M/ZurWFIxmF9I/E= -cloud.google.com/go/bigquery v1.48.0/go.mod h1:QAwSz+ipNgfL5jxiaK7weyOhzdoAy1zFm0Nf1fysJac= -cloud.google.com/go/bigquery v1.49.0/go.mod h1:Sv8hMmTFFYBlt/ftw2uN6dFdQPzBlREY9yBh7Oy7/4Q= -cloud.google.com/go/bigquery v1.50.0/go.mod h1:YrleYEh2pSEbgTBZYMJ5SuSr0ML3ypjRB1zgf7pvQLU= cloud.google.com/go/bigquery v1.52.0 h1:JKLNdxI0N+TIUWD6t9KN646X27N5dQWq9dZbbTWZ8hc= cloud.google.com/go/bigquery v1.52.0/go.mod h1:3b/iXjRQGU4nKa87cXeg6/gogLjO8C6PmuM8i5Bi/u4= -cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= -cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= -cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= -cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y= -cloud.google.com/go/billing v1.12.0/go.mod h1:yKrZio/eu+okO/2McZEbch17O5CB5NpZhhXG6Z766ss= -cloud.google.com/go/billing v1.13.0/go.mod h1:7kB2W9Xf98hP9Sr12KfECgfGclsH3CQR0R08tnRlRbc= -cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= -cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= -cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= -cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk= -cloud.google.com/go/binaryauthorization v1.5.0/go.mod h1:OSe4OU1nN/VswXKRBmciKpo9LulY41gch5c68htf3/Q= -cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= -cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590= -cloud.google.com/go/certificatemanager v1.6.0/go.mod h1:3Hh64rCKjRAX8dXgRAyOcY5vQ/fE1sh8o+Mdd6KPgY8= -cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= -cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk= -cloud.google.com/go/channel v1.11.0/go.mod h1:IdtI0uWGqhEeatSB62VOoJ8FSUhJ9/+iGkJVqp74CGE= -cloud.google.com/go/channel v1.12.0/go.mod h1:VkxCGKASi4Cq7TbXxlaBezonAYpp1GCnKMY6tnMQnLU= -cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= -cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA= -cloud.google.com/go/cloudbuild v1.6.0/go.mod h1:UIbc/w9QCbH12xX+ezUsgblrWv+Cv4Tw83GiSMHOn9M= -cloud.google.com/go/cloudbuild v1.7.0/go.mod h1:zb5tWh2XI6lR9zQmsm1VRA+7OCuve5d8S+zJUul8KTg= -cloud.google.com/go/cloudbuild v1.9.0/go.mod h1:qK1d7s4QlO0VwfYn5YuClDGg2hfmLZEb4wQGAbIgL1s= -cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= -cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk= -cloud.google.com/go/clouddms v1.5.0/go.mod h1:QSxQnhikCLUw13iAbffF2CZxAER3xDGNHjsTAkQJcQA= -cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= -cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= -cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= -cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI= -cloud.google.com/go/cloudtasks v1.9.0/go.mod h1:w+EyLsVkLWHcOaqNEyvcKAsWp9p29dL6uL9Nst1cI7Y= -cloud.google.com/go/cloudtasks v1.10.0/go.mod h1:NDSoTLkZ3+vExFEWu2UJV1arUyzVDAiZtdWcsUyNwBs= -cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= -cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= -cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= -cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= -cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= -cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= -cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= -cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARyZtRXDJ8GE= -cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo= -cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA= -cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= -cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= -cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= -cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI= -cloud.google.com/go/compute v1.20.0/go.mod h1:kn5BhC++qUWR/AM3Dn21myV7QbgqejW04cAOrtppaQI= -cloud.google.com/go/compute v1.20.1 h1:6aKEtlUiwEpJzM001l0yFkpXmUVXaN8W+fbkb2AZNbg= -cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= -cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= +cloud.google.com/go/compute v1.22.0 h1:cB8R6FtUtT1TYGl5R3xuxnW6OUIc/DrT2aiR16TTG7Y= +cloud.google.com/go/compute v1.22.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= -cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= -cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= -cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= -cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= -cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo= -cloud.google.com/go/container v1.13.1/go.mod h1:6wgbMPeQRw9rSnKBCAJXnds3Pzj03C4JHamr8asWKy4= -cloud.google.com/go/container v1.14.0/go.mod h1:3AoJMPhHfLDxLvrlVWaK57IXzaPnLaZq63WX59aQBfM= -cloud.google.com/go/container v1.15.0/go.mod h1:ft+9S0WGjAyjDggg5S06DXj+fHJICWg8L7isCQe9pQA= -cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= -cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= -cloud.google.com/go/containeranalysis v0.7.0/go.mod h1:9aUL+/vZ55P2CXfuZjS4UjQ9AgXoSw8Ts6lemfmxBxI= -cloud.google.com/go/containeranalysis v0.9.0 h1:EQ4FFxNaEAg8PqQCO7bVQfWz9NVwZCUKaM1b3ycfx3U= -cloud.google.com/go/containeranalysis v0.9.0/go.mod h1:orbOANbwk5Ejoom+s+DUCTTJ7IBdBQJDcSylAx/on9s= -cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= -cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= -cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= -cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE= -cloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOXxZoKYF5wdISM= -cloud.google.com/go/datacatalog v1.8.1/go.mod h1:RJ58z4rMp3gvETA465Vg+ag8BGgBdnRPEMMSTr5Uv+M= -cloud.google.com/go/datacatalog v1.12.0/go.mod h1:CWae8rFkfp6LzLumKOnmVh4+Zle4A3NXLzVJ1d1mRm0= -cloud.google.com/go/datacatalog v1.13.0/go.mod h1:E4Rj9a5ZtAxcQJlEBTLgMTphfP11/lNaAshpoBgemX8= -cloud.google.com/go/datacatalog v1.14.0 h1:ScW+U7bcoNYdS4xuVfnNdt2nR2j7esPyFJEZFW87ZzY= -cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= -cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= -cloud.google.com/go/dataflow v0.8.0/go.mod h1:Rcf5YgTKPtQyYz8bLYhFoIV/vP39eL7fWNcSOyFfLJE= -cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= -cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= -cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0= -cloud.google.com/go/dataform v0.6.0/go.mod h1:QPflImQy33e29VuapFdf19oPbE4aYTJxr31OAPV+ulA= -cloud.google.com/go/dataform v0.7.0/go.mod h1:7NulqnVozfHvWUBpMDfKMUESr+85aJsC/2O0o3jWPDE= -cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= -cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w= -cloud.google.com/go/datafusion v1.6.0/go.mod h1:WBsMF8F1RhSXvVM8rCV3AeyWVxcC2xY6vith3iw3S+8= -cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= -cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= -cloud.google.com/go/datalabeling v0.7.0/go.mod h1:WPQb1y08RJbmpM3ww0CSUAGweL0SxByuW2E+FU+wXcM= -cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= -cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A= -cloud.google.com/go/dataplex v1.5.2/go.mod h1:cVMgQHsmfRoI5KFYq4JtIBEUbYwc3c7tXmIDhRmNNVQ= -cloud.google.com/go/dataplex v1.6.0/go.mod h1:bMsomC/aEJOSpHXdFKFGQ1b0TDPIeL28nJObeO1ppRs= -cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= -cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI= -cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4= -cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= -cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= -cloud.google.com/go/dataqna v0.7.0/go.mod h1:Lx9OcIIeqCrw1a6KdO3/5KMP1wAmTc0slZWwP12Qq3c= +cloud.google.com/go/containeranalysis v0.10.1 h1:SM/ibWHWp4TYyJMwrILtcBtYKObyupwOVeceI9pNblw= +cloud.google.com/go/containeranalysis v0.10.1/go.mod h1:Ya2jiILITMY68ZLPaogjmOMNkwsDrWBSTyBubGXO7j0= +cloud.google.com/go/datacatalog v1.14.1 h1:cFPBt8V5V2T3mu/96tc4nhcMB+5cYcpwjBfn79bZDI8= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM= -cloud.google.com/go/datastore v1.11.0/go.mod h1:TvGxBIHCS50u8jzG+AW/ppf87v1of8nwzFNgEZU1D3c= -cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= -cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= -cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= -cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4= -cloud.google.com/go/datastream v1.6.0/go.mod h1:6LQSuswqLa7S4rPAOZFVjHIG3wJIjZcZrw8JDEDJuIs= -cloud.google.com/go/datastream v1.7.0/go.mod h1:uxVRMm2elUSPuh65IbZpzJNMbuzkcvu5CjMqVIUHrww= -cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= -cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s= -cloud.google.com/go/deploy v1.6.0/go.mod h1:f9PTHehG/DjCom3QH0cntOVRm93uGBDt2vKzAPwpXQI= -cloud.google.com/go/deploy v1.8.0/go.mod h1:z3myEJnA/2wnB4sgjqdMfgxCA0EqC3RBTNcVPs93mtQ= -cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= -cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= -cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= -cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek= -cloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFMoosgy+6Gn0s0= -cloud.google.com/go/dialogflow v1.29.0/go.mod h1:b+2bzMe+k1s9V+F2jbJwpHPzrnIyHihAdRFMtn2WXuM= -cloud.google.com/go/dialogflow v1.31.0/go.mod h1:cuoUccuL1Z+HADhyIA7dci3N5zUssgpBJmCzI6fNRB4= -cloud.google.com/go/dialogflow v1.32.0/go.mod h1:jG9TRJl8CKrDhMEcvfcfFkkpp8ZhgPz3sBGmAUYJ2qE= -cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= -cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q= -cloud.google.com/go/dlp v1.9.0/go.mod h1:qdgmqgTyReTz5/YNSSuueR8pl7hO0o9bQ39ZhtgkWp4= -cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= -cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= -cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= -cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4= -cloud.google.com/go/documentai v1.16.0/go.mod h1:o0o0DLTEZ+YnJZ+J4wNfTxmDVyrkzFvttBXXtYRMHkM= -cloud.google.com/go/documentai v1.18.0/go.mod h1:F6CK6iUH8J81FehpskRmhLq/3VlwQvb7TvwOceQ2tbs= -cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= -cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= -cloud.google.com/go/domains v0.8.0/go.mod h1:M9i3MMDzGFXsydri9/vW+EWz9sWb4I6WyHqdlAk0idE= -cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= -cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= -cloud.google.com/go/edgecontainer v0.3.0/go.mod h1:FLDpP4nykgwwIfcLt6zInhprzw0lEi2P1fjO6Ie0qbc= -cloud.google.com/go/edgecontainer v1.0.0/go.mod h1:cttArqZpBB2q58W/upSG++ooo6EsblxDIolxa3jSjbY= -cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= -cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= -cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= -cloud.google.com/go/essentialcontacts v1.5.0/go.mod h1:ay29Z4zODTuwliK7SnX8E86aUF2CTzdNtvv42niCX0M= -cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= -cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= -cloud.google.com/go/eventarc v1.10.0/go.mod h1:u3R35tmZ9HvswGRBnF48IlYgYeBcPUCjkr4BTdem2Kw= -cloud.google.com/go/eventarc v1.11.0/go.mod h1:PyUjsUKPWoRBCHeOxZd/lbOOjahV41icXyUY5kSTvVY= -cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= -cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= -cloud.google.com/go/filestore v1.5.0/go.mod h1:FqBXDWBp4YLHqRnVGveOkHDf8svj9r5+mUDLupOWEDs= -cloud.google.com/go/filestore v1.6.0/go.mod h1:di5unNuss/qfZTw2U9nhFqo8/ZDSc466dre85Kydllg= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= -cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= -cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= -cloud.google.com/go/firestore v1.10.0/go.mod h1:eAeoQCV8F35Mcy4k8ZrQbcSYZOayIwoiU7ZJ6xzH1+o= -cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= -cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= -cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= -cloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5UwtlpzoyquQ08= -cloud.google.com/go/functions v1.10.0/go.mod h1:0D3hEOe3DbEvCXtYOZHQZmD+SzYsi1YbI7dGvHfldXw= -cloud.google.com/go/functions v1.12.0/go.mod h1:AXWGrF3e2C/5ehvwYo/GH6O5s09tOPksiKhz+hH8WkA= -cloud.google.com/go/functions v1.13.0/go.mod h1:EU4O007sQm6Ef/PwRsI8N2umygGqPBS/IZQKBQBcJ3c= -cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= -cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= -cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= -cloud.google.com/go/gaming v1.8.0/go.mod h1:xAqjS8b7jAVW0KFYeRUxngo9My3f33kFmua++Pi+ggM= -cloud.google.com/go/gaming v1.9.0/go.mod h1:Fc7kEmCObylSWLO334NcO+O9QMDyz+TKC4v1D7X+Bc0= -cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= -cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo= -cloud.google.com/go/gkebackup v0.4.0/go.mod h1:byAyBGUwYGEEww7xsbnUTBHIYcOPy/PgUWUtOeRm9Vg= -cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= -cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= -cloud.google.com/go/gkeconnect v0.7.0/go.mod h1:SNfmVqPkaEi3bF/B3CNZOAYPYdg7sU+obZ+QTky2Myw= -cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= -cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= -cloud.google.com/go/gkehub v0.11.0/go.mod h1:JOWHlmN+GHyIbuWQPl47/C2RFhnFKH38jH9Ascu3n0E= -cloud.google.com/go/gkehub v0.12.0/go.mod h1:djiIwwzTTBrF5NaXCGv3mf7klpEMcST17VBTVVDcuaw= -cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= -cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI= -cloud.google.com/go/gkemulticloud v0.5.0/go.mod h1:W0JDkiyi3Tqh0TJr//y19wyb1yf8llHVto2Htf2Ja3Y= -cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= -cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= -cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= -cloud.google.com/go/gsuiteaddons v1.5.0/go.mod h1:TFCClYLd64Eaa12sFVmUyG62tk4mdIsI7pAnSXRkcFo= -cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= -cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= -cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= -cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= -cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE= -cloud.google.com/go/iam v0.11.0/go.mod h1:9PiLDanza5D+oWFZiH1uG+RnRCfEGKoyl6yo4cgWZGY= -cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= -cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= -cloud.google.com/go/iam v1.0.1/go.mod h1:yR3tmSL8BcZB4bxByRv2jkSIahVmCtfKZwLYGBalRE8= -cloud.google.com/go/iam v1.1.0 h1:67gSqaPukx7O8WLLHMa0PNs3EBGd2eE4d+psbO/CO94= -cloud.google.com/go/iam v1.1.0/go.mod h1:nxdHjaKfCr7fNYx/HJMM8LgiMugmveWlkatear5gVyk= -cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= -cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= -cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk= -cloud.google.com/go/iap v1.7.0/go.mod h1:beqQx56T9O1G1yNPph+spKpNibDlYIiIixiqsQXxLIo= -cloud.google.com/go/iap v1.7.1/go.mod h1:WapEwPc7ZxGt2jFGB/C/bm+hP0Y6NXzOYGjpPnmMS74= -cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= -cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= -cloud.google.com/go/ids v1.3.0/go.mod h1:JBdTYwANikFKaDP6LtW5JAi4gubs57SVNQjemdt6xV4= -cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= -cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= -cloud.google.com/go/iot v1.5.0/go.mod h1:mpz5259PDl3XJthEmh9+ap0affn/MqNSP4My77Qql9o= -cloud.google.com/go/iot v1.6.0/go.mod h1:IqdAsmE2cTYYNO1Fvjfzo9po179rAtJeVGUvkLN3rLE= -cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= -cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= -cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0= -cloud.google.com/go/kms v1.8.0/go.mod h1:4xFEhYFqvW+4VMELtZyxomGSYtSQKzM178ylFW4jMAg= -cloud.google.com/go/kms v1.9.0/go.mod h1:qb1tPTgfF9RQP8e1wq4cLFErVuTJv7UsSC915J8dh3w= -cloud.google.com/go/kms v1.10.0/go.mod h1:ng3KTUtQQU9bPX3+QGLsflZIHlkbn8amFAMY63m8d24= -cloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI= -cloud.google.com/go/kms v1.10.2/go.mod h1:9mX3Q6pdroWzL20pbK6RaOdBbXBEhMNgK4Pfz2bweb4= -cloud.google.com/go/kms v1.12.0 h1:IEYV44WsGc6yVO1PlvnRlYzsHM2ImpB598Cglh/3uGw= -cloud.google.com/go/kms v1.12.0/go.mod h1:syfpIBSOqQ/ZqK48RLPkwUhFhvbsA1SyGAq/vPohd20= -cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= -cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= -cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= -cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= -cloud.google.com/go/language v1.9.0/go.mod h1:Ns15WooPM5Ad/5no/0n81yUetis74g3zrbeJBE+ptUY= -cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= -cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= -cloud.google.com/go/lifesciences v0.8.0/go.mod h1:lFxiEOMqII6XggGbOnKiyZ7IBwoIqA84ClvoezaA/bo= -cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw= -cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M= -cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= -cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= -cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= -cloud.google.com/go/longrunning v0.4.2/go.mod h1:OHrnaYyLUV6oqwh0xiS7e5sLQhP1m0QU9R+WhGDMgIQ= -cloud.google.com/go/longrunning v0.5.0 h1:DK8BH0+hS+DIvc9a2TPnteUievsTCH4ORMAASSb7JcQ= -cloud.google.com/go/longrunning v0.5.0/go.mod h1:0JNuqRShmscVAhIACGtskSAWtqtOoPkwP0YF1oVEchc= -cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= -cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= -cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA= -cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI= -cloud.google.com/go/maps v0.6.0/go.mod h1:o6DAMMfb+aINHz/p/jbcY+mYeXBoZoxTfdSQ8VAJaCw= -cloud.google.com/go/maps v0.7.0/go.mod h1:3GnvVl3cqeSvgMcpRlQidXsPYuDGQ8naBis7MVzpXsY= -cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= -cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= -cloud.google.com/go/mediatranslation v0.7.0/go.mod h1:LCnB/gZr90ONOIQLgSXagp8XUW1ODs2UmUMvcgMfI2I= -cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= -cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= -cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= -cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY= -cloud.google.com/go/memcache v1.9.0/go.mod h1:8oEyzXCu+zo9RzlEaEjHl4KkgjlNDaXbCQeQWlzNFJM= -cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= -cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= -cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= -cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI= -cloud.google.com/go/metastore v1.10.0/go.mod h1:fPEnH3g4JJAk+gMRnrAnoqyv2lpUCqJPWOodSaf45Eo= -cloud.google.com/go/monitoring v1.1.0/go.mod h1:L81pzz7HKn14QCMaCs6NTQkdBnE87TElyanS95vIcl4= -cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= -cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= -cloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w= -cloud.google.com/go/monitoring v1.13.0/go.mod h1:k2yMBAB1H9JT/QETjNkgdCGD9bPF712XiLTVr+cBrpw= -cloud.google.com/go/monitoring v1.15.0 h1:b85k1A7eWZDkNtK08hDt45vNHJ2b0WpeNFAkUa86ons= -cloud.google.com/go/monitoring v1.15.0/go.mod h1:/LPLNIY93ZtCpPKuO38kEYh+WhhiqIt8HYch2srelRM= -cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= -cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= -cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= -cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8= -cloud.google.com/go/networkconnectivity v1.10.0/go.mod h1:UP4O4sWXJG13AqrTdQCD9TnLGEbtNRqjuaaA7bNjF5E= -cloud.google.com/go/networkconnectivity v1.11.0/go.mod h1:iWmDD4QF16VCDLXUqvyspJjIEtBR/4zq5hwnY2X3scM= -cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= -cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4= -cloud.google.com/go/networkmanagement v1.6.0/go.mod h1:5pKPqyXjB/sgtvB5xqOemumoQNB7y95Q7S+4rjSOPYY= -cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= -cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= -cloud.google.com/go/networksecurity v0.7.0/go.mod h1:mAnzoxx/8TBSyXEeESMy9OOYwo1v+gZ5eMRnsT5bC8k= -cloud.google.com/go/networksecurity v0.8.0/go.mod h1:B78DkqsxFG5zRSVuwYFRZ9Xz8IcQ5iECsNrPn74hKHU= -cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= -cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= -cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= -cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0= -cloud.google.com/go/notebooks v1.7.0/go.mod h1:PVlaDGfJgj1fl1S3dUwhFMXFgfYGhYQt2164xOMONmE= -cloud.google.com/go/notebooks v1.8.0/go.mod h1:Lq6dYKOYOWUCTvw5t2q1gp1lAp0zxAxRycayS0iJcqQ= -cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= -cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs= -cloud.google.com/go/optimization v1.3.1/go.mod h1:IvUSefKiwd1a5p0RgHDbWCIbDFgKuEdB+fPPuP0IDLI= -cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= -cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk= -cloud.google.com/go/orchestration v1.6.0/go.mod h1:M62Bevp7pkxStDfFfTuCOaXgaaqRAga1yKyoMtEoWPQ= -cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= -cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc= -cloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc= -cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= -cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= -cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= -cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw= -cloud.google.com/go/osconfig v1.11.0/go.mod h1:aDICxrur2ogRd9zY5ytBLV89KEgT2MKB2L/n6x1ooPw= -cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= -cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= -cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= -cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo= -cloud.google.com/go/oslogin v1.9.0/go.mod h1:HNavntnH8nzrn8JCTT5fj18FuJLFJc4NaZJtBnQtKFs= -cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= -cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= -cloud.google.com/go/phishingprotection v0.7.0/go.mod h1:8qJI4QKHoda/sb/7/YmMQ2omRLSLYSu9bU0EKCNI+Lk= -cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= -cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE= -cloud.google.com/go/policytroubleshooter v1.5.0/go.mod h1:Rz1WfV+1oIpPdN2VvvuboLVRsB1Hclg3CKQ53j9l8vw= -cloud.google.com/go/policytroubleshooter v1.6.0/go.mod h1:zYqaPTsmfvpjm5ULxAyD/lINQxJ0DDsnWOP/GZ7xzBc= -cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= -cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= -cloud.google.com/go/privatecatalog v0.7.0/go.mod h1:2s5ssIFO69F5csTXcwBP7NPFTZvps26xGzvQ2PQaBYg= -cloud.google.com/go/privatecatalog v0.8.0/go.mod h1:nQ6pfaegeDAq/Q5lrfCQzQLhubPiZhSaNhIgfJlnIXs= +cloud.google.com/go/iam v1.1.1 h1:lW7fzj15aVIXYHREOqjRBV9PsH0Z6u8Y46a1YGvQP4Y= +cloud.google.com/go/iam v1.1.1/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= +cloud.google.com/go/kms v1.14.0 h1:B/F3X7OzZ2pFlKsJc0+5sbHV/k45+ITKIHH5l/HGUf4= +cloud.google.com/go/kms v1.14.0/go.mod h1:c9J991h5DTl+kg7gi3MYomh12YEENGrf48ee/N/2CDM= +cloud.google.com/go/longrunning v0.5.1 h1:Fr7TXftcqTudoyRJa113hyaqlGdiBQkp0Gq7tErFDWI= +cloud.google.com/go/monitoring v1.15.1 h1:65JhLMd+JiYnXr6j5Z63dUYCuOg770p8a/VC+gil/58= +cloud.google.com/go/monitoring v1.15.1/go.mod h1:lADlSAlFdbqQuwwpaImhsJXu1QSdd3ojypXrFSMr2rM= 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/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcdcPRnFIRI= -cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0= -cloud.google.com/go/pubsub v1.28.0/go.mod h1:vuXFpwaVoIPQMGXqRyUQigu/AX1S3IWugR9xznmcXX8= -cloud.google.com/go/pubsub v1.30.0/go.mod h1:qWi1OPS0B+b5L+Sg6Gmc9zD1Y+HaM0MdUr7LsupY1P4= -cloud.google.com/go/pubsub v1.31.0/go.mod h1:dYmJ3K97NCQ/e4OwZ20rD4Ym3Bu8Gu9m/aJdWQjdcks= cloud.google.com/go/pubsub v1.32.0 h1:JOEkgEYBuUTHSyHS4TcqOFuWr+vD6qO/imsFqShUCp4= cloud.google.com/go/pubsub v1.32.0/go.mod h1:f+w71I33OMyxf9VpMVcZbnG5KSUkCOUHYpFd5U1GdRc= -cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg= -cloud.google.com/go/pubsublite v1.6.0/go.mod h1:1eFCS0U11xlOuMFV/0iBqw3zP12kddMeCbj/F3FSj9k= -cloud.google.com/go/pubsublite v1.7.0/go.mod h1:8hVMwRXfDfvGm3fahVbtDbiLePT3gpoiJYJY+vxWxVM= -cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= -cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= -cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= -cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= -cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE= -cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U= -cloud.google.com/go/recaptchaenterprise/v2 v2.6.0/go.mod h1:RPauz9jeLtB3JVzg6nCbe12qNoaa8pXc4d/YukAmcnA= -cloud.google.com/go/recaptchaenterprise/v2 v2.7.0/go.mod h1:19wVj/fs5RtYtynAPJdDTb69oW0vNHYDBTbB4NvMD9c= -cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= -cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= -cloud.google.com/go/recommendationengine v0.7.0/go.mod h1:1reUcE3GIu6MeBz/h5xZJqNLuuVjNg1lmWMPyjatzac= -cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= -cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= -cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= -cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70= -cloud.google.com/go/recommender v1.9.0/go.mod h1:PnSsnZY7q+VL1uax2JWkt/UegHssxjUVVCrX52CuEmQ= -cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= -cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= -cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= -cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM= -cloud.google.com/go/redis v1.11.0/go.mod h1:/X6eicana+BWcUda5PpwZC48o37SiFVTFSs0fWAJ7uQ= -cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= -cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0= -cloud.google.com/go/resourcemanager v1.5.0/go.mod h1:eQoXNAiAvCf5PXxWxXjhKQoTMaUSNrEfg+6qdf/wots= -cloud.google.com/go/resourcemanager v1.6.0/go.mod h1:YcpXGRs8fDzcUl1Xw8uOVmI8JEadvhRIkoXXUNVYcVo= -cloud.google.com/go/resourcemanager v1.7.0/go.mod h1:HlD3m6+bwhzj9XCouqmeiGuni95NTrExfhoSrkC/3EI= -cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= -cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg= -cloud.google.com/go/resourcesettings v1.5.0/go.mod h1:+xJF7QSG6undsQDfsCJyqWXyBwUoJLhetkRMDRnIoXA= -cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= -cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= -cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= -cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y= -cloud.google.com/go/retail v1.12.0/go.mod h1:UMkelN/0Z8XvKymXFbD4EhFJlYKRx1FGhQkVPU5kF14= -cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= -cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo= -cloud.google.com/go/run v0.8.0/go.mod h1:VniEnuBwqjigv0A7ONfQUaEItaiCRVujlMqerPPiktM= -cloud.google.com/go/run v0.9.0/go.mod h1:Wwu+/vvg8Y+JUApMwEDfVfhetv30hCG4ZwDR/IXl2Qg= -cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= -cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= -cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= -cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44= -cloud.google.com/go/scheduler v1.8.0/go.mod h1:TCET+Y5Gp1YgHT8py4nlg2Sew8nUHMqcpousDgXJVQc= -cloud.google.com/go/scheduler v1.9.0/go.mod h1:yexg5t+KSmqu+njTIh3b7oYPheFtBWGcbVUYF1GGMIc= -cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= -cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= -cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4= -cloud.google.com/go/secretmanager v1.10.0/go.mod h1:MfnrdvKMPNra9aZtQFvBcvRU54hbPD8/HayQdlUgJpU= -cloud.google.com/go/secretmanager v1.11.0/go.mod h1:qeQq0/jyJqrGeULu0GkRsVSPKTvf98AEqJnuEIQiJwA= -cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= -cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= -cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= -cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q= -cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA= -cloud.google.com/go/security v1.12.0/go.mod h1:rV6EhrpbNHrrxqlvW0BWAIawFWq3X90SduMJdFwtLB8= -cloud.google.com/go/security v1.13.0/go.mod h1:Q1Nvxl1PAgmeW0y3HTt54JYIvUdtcpYKVfIB8AOMZ+0= -cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= -cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= -cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= -cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk= -cloud.google.com/go/securitycenter v1.18.1/go.mod h1:0/25gAzCM/9OL9vVx4ChPeM/+DlfGQJDwBy/UC8AKK0= -cloud.google.com/go/securitycenter v1.19.0/go.mod h1:LVLmSg8ZkkyaNy4u7HCIshAngSQ8EcIRREP3xBnyfag= -cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= -cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= -cloud.google.com/go/servicecontrol v1.10.0/go.mod h1:pQvyvSRh7YzUF2efw7H87V92mxU8FnFDawMClGCNuAA= -cloud.google.com/go/servicecontrol v1.11.0/go.mod h1:kFmTzYzTUIuZs0ycVqRHNaNhgR+UMUpw9n02l/pY+mc= -cloud.google.com/go/servicecontrol v1.11.1/go.mod h1:aSnNNlwEFBY+PWGQ2DoM0JJ/QUXqV5/ZD9DOLB7SnUk= -cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= -cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= -cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4= -cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U= -cloud.google.com/go/servicedirectory v1.8.0/go.mod h1:srXodfhY1GFIPvltunswqXpVxFPpZjf8nkKQT7XcXaY= -cloud.google.com/go/servicedirectory v1.9.0/go.mod h1:29je5JjiygNYlmsGz8k6o+OZ8vd4f//bQLtvzkPPT/s= -cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= -cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= -cloud.google.com/go/servicemanagement v1.6.0/go.mod h1:aWns7EeeCOtGEX4OvZUWCCJONRZeFKiptqKf1D0l/Jc= -cloud.google.com/go/servicemanagement v1.8.0/go.mod h1:MSS2TDlIEQD/fzsSGfCdJItQveu9NXnUniTrq/L8LK4= -cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E= -cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU= -cloud.google.com/go/serviceusage v1.5.0/go.mod h1:w8U1JvqUqwJNPEOTQjrMHkw3IaIFLoLsPLvsE3xueec= -cloud.google.com/go/serviceusage v1.6.0/go.mod h1:R5wwQcbOWsyuOfbP9tGdAnCAc6B9DRwPG1xtWMDeuPA= -cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= -cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= -cloud.google.com/go/shell v1.6.0/go.mod h1:oHO8QACS90luWgxP3N9iZVuEiSF84zNyLytb+qE2f9A= -cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= -cloud.google.com/go/spanner v1.44.0/go.mod h1:G8XIgYdOK+Fbcpbs7p2fiprDw4CaZX63whnSMLVBxjk= -cloud.google.com/go/spanner v1.45.0/go.mod h1:FIws5LowYz8YAE1J8fOS7DJup8ff7xJeetWEo5REA2M= -cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= -cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= -cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= -cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco= -cloud.google.com/go/speech v1.14.1/go.mod h1:gEosVRPJ9waG7zqqnsHpYTOoAS4KouMRLDFMekpJ0J0= -cloud.google.com/go/speech v1.15.0/go.mod h1:y6oH7GhqCaZANH7+Oe0BhgIogsNInLlz542tg3VqeYI= 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.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= -cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= -cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= -cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= -cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= -cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= -cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= -cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= -cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4= -cloud.google.com/go/storagetransfer v1.8.0/go.mod h1:JpegsHHU1eXg7lMHkvf+KE5XDJ7EQu0GwNJbbVGanEw= -cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= -cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= -cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= -cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA= -cloud.google.com/go/talent v1.5.0/go.mod h1:G+ODMj9bsasAEJkQSzO2uHQWXHHXUomArjWQQYkqK6c= -cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= -cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4= -cloud.google.com/go/texttospeech v1.6.0/go.mod h1:YmwmFT8pj1aBblQOI3TfKmwibnsfvhIBzPXcW4EBovc= -cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= -cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg= -cloud.google.com/go/tpu v1.5.0/go.mod h1:8zVo1rYDFuW2l4yZVY0R0fb/v44xLh3llq7RuV61fPM= -cloud.google.com/go/trace v1.0.0/go.mod h1:4iErSByzxkyHWzzlAj63/Gmjz0NH1ASqhJguHpGcr6A= -cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= -cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= -cloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA= -cloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk= -cloud.google.com/go/trace v1.10.0 h1:qHz42GfGe3OfNvKMUs5Z8lD+PuUr3uqUADVgKG+SCw4= -cloud.google.com/go/trace v1.10.0/go.mod h1:X3g0Th7+AIjj4rUVhv9JpMv7jpsRIJ9et+wYjCHYbQs= -cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= -cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= -cloud.google.com/go/translate v1.5.0/go.mod h1:29YDSYveqqpA1CQFD7NQuP49xymq17RXNaUDdc0mNu0= -cloud.google.com/go/translate v1.6.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= -cloud.google.com/go/translate v1.7.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= -cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= -cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw= -cloud.google.com/go/video v1.12.0/go.mod h1:MLQew95eTuaNDEGriQdcYn0dTwf9oWiA4uYebxM5kdg= -cloud.google.com/go/video v1.13.0/go.mod h1:ulzkYlYgCp15N2AokzKjy7MQ9ejuynOJdf1tR5lGthk= -cloud.google.com/go/video v1.14.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= -cloud.google.com/go/video v1.15.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= -cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= -cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= -cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= -cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU= -cloud.google.com/go/videointelligence v1.10.0/go.mod h1:LHZngX1liVtUhZvi2uNS0VQuOzNi2TkY1OakiuoUOjU= -cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= -cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= -cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= -cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY= -cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E= -cloud.google.com/go/vision/v2 v2.6.0/go.mod h1:158Hes0MvOS9Z/bDMSFpjwsUrZ5fPrdwuyyvKSGAGMY= -cloud.google.com/go/vision/v2 v2.7.0/go.mod h1:H89VysHy21avemp6xcf9b9JvZHVehWbET0uT/bcuY/0= -cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= -cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= -cloud.google.com/go/vmmigration v1.5.0/go.mod h1:E4YQ8q7/4W9gobHjQg4JJSgXXSgY21nA5r8swQV+Xxc= -cloud.google.com/go/vmmigration v1.6.0/go.mod h1:bopQ/g4z+8qXzichC7GW1w2MjbErL54rk3/C843CjfY= -cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208= -cloud.google.com/go/vmwareengine v0.2.2/go.mod h1:sKdctNJxb3KLZkE/6Oui94iw/xs9PRNC2wnNLXsHvH8= -cloud.google.com/go/vmwareengine v0.3.0/go.mod h1:wvoyMvNWdIzxMYSpH/R7y2h5h3WFkx6d+1TIsP39WGY= -cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= -cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= -cloud.google.com/go/vpcaccess v1.6.0/go.mod h1:wX2ILaNhe7TlVa4vC5xce1bCnqE3AeH27RV31lnmZes= -cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= -cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= -cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= -cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A= -cloud.google.com/go/webrisk v1.8.0/go.mod h1:oJPDuamzHXgUc+b8SiHRcVInZQuybnvEW72PqTc7sSg= -cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= -cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ= -cloud.google.com/go/websecurityscanner v1.5.0/go.mod h1:Y6xdCPy81yi0SQnDY1xdNTNpfY1oAgXUlcfN3B3eSng= -cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= -cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= -cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= -cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= -code.cloudfoundry.org/clock v0.0.0-20180518195852-02e53af36e6c/go.mod h1:QD9Lzhd/ux6eNQVUDVRJX/RKTigpewimNYBi7ivZKY8= -contrib.go.opencensus.io/exporter/aws v0.0.0-20230502192102-15967c811cec/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= +cloud.google.com/go/storage v1.31.0 h1:+S3LjjEN2zZ+L5hOwj4+1OkGCsLVe0NzpXKQ1pSdTCI= +cloud.google.com/go/storage v1.31.0/go.mod h1:81ams1PrhW16L4kF7qg+4mTq7SRs5HsbDTM0bWvrwJ0= +cloud.google.com/go/trace v1.10.1 h1:EwGdOLCNfYOOPtgqo+D2sDLZmRCEO1AagRTJCU6ztdg= +cloud.google.com/go/trace v1.10.1/go.mod h1:gbtL94KE5AJLH3y+WVpfWILmqgc6dXcqgNXdOPAQTYk= contrib.go.opencensus.io/exporter/stackdriver v0.13.14 h1:zBakwHardp9Jcb8sQHcHpXy/0+JIb1M8KjigCJzx7+4= contrib.go.opencensus.io/exporter/stackdriver v0.13.14/go.mod h1:5pSSGY0Bhuk7waTHuDf4aQ8D2DrhgETRo9fy6k3Xlzc= -contrib.go.opencensus.io/integrations/ocsql v0.1.7/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= -git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= -github.com/Azure/azure-amqp-common-go/v3 v3.2.3/go.mod h1:7rPmbSfszeovxGfc5fSAXE4ehlXQZHpMja2OtxC2Tas= github.com/Azure/azure-sdk-for-go v35.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v38.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v42.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v63.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v65.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v66.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.0.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.2/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.3.0/go.mod h1:tZoQYdDZNOiIjdSn0dVWVfl0NEPGOJqVLzSrcFk4Is0= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0/go.mod h1:ON4tFdPTwRcgWEaVDrN3584Ef+b7GgSJaXxe5fW9t4M= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.1/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.0.0/go.mod h1:+6sju8gk8FRmSajX3Oz4G5Gm7P+mbqE9FVaXXFYTkCM= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.1.0/go.mod h1:bhXu1AjYL+wutSL/kpSq6s7733q2Rb0yuot9Zgfqa/0= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.1/go.mod h1:gLa1CL2RNE4s7M3yopJ/p0iq5DdY6Yv5ZUt9MTRZOQM= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0/go.mod h1:OQeznEEkTZ9OrhHJoDD8ZDq51FHgXjqtP9z6bEwBq9U= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.1/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.2/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0/go.mod h1:Pu5Zksi2KrU7LPbZbNINx6fuVrUp/ffvpxdDj+i8LeE= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1/go.mod h1:9V2j0jn9jDEkCkv8w/bKTNppX/d0FVA1ud77xCIP4KA= -github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus v1.4.0/go.mod h1:pXDkeh10bAqElvd+S5Ppncj+DCKvJGXNa8rRT2R7rIw= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0/go.mod h1:2e8rMJtl2+2j+HXbTBwnyGpm5Nou7KhvSfxOq8JpTag= -github.com/Azure/go-amqp v0.17.0/go.mod h1:9YJ3RhxRT1gquYnzpZO1vcYMMpAdJT+QEg6fwmw9Zlg= -github.com/Azure/go-amqp v1.0.0/go.mod h1:+bg0x3ce5+Q3ahCEXnCsGG3ETpDQe3MEVnOuT2ywPwc= -github.com/Azure/go-amqp v1.0.1/go.mod h1:+bg0x3ce5+Q3ahCEXnCsGG3ETpDQe3MEVnOuT2ywPwc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= github.com/Azure/go-autorest/autorest v0.9.3/go.mod h1:GsRuLYvwzLjjjRoWEIyMUaYq8GNUx2nRB378IPt/1p0= github.com/Azure/go-autorest/autorest v0.10.2/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= -github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= -github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= -github.com/Azure/go-autorest/autorest v0.11.25/go.mod h1:7l8ybrIdUmGqZMTD0sRtAr8NvbHjfofbf8RSP2q7w7U= -github.com/Azure/go-autorest/autorest v0.11.28/go.mod h1:MrkzG3Y3AH668QyF9KRk5neJnGgmhQ6krbhR8Q5eMvA= github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= -github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= -github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= -github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= -github.com/Azure/go-autorest/autorest/adal v0.9.23/go.mod h1:5pcMqFkdPhviJdlEy3kC/v1ZLnQl0MH6XA5YCcMhy4c= github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= -github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/autorest/mocks v0.4.2/go.mod h1:Vy7OitM9Kei0i1Oj+LvyAWMXJHeKH1MVlzFugfVrmyU= github.com/Azure/go-autorest/autorest/to v0.2.0/go.mod h1:GunWKJp1AEqgMaGLV+iocmRAJWqST1wQYhyyjXJ3SJc= github.com/Azure/go-autorest/autorest/to v0.3.0/go.mod h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA= -github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= github.com/Azure/go-autorest/autorest/validation v0.1.0/go.mod h1:Ha3z/SqBeaalWQvokg3NZAlQTalVMtOIAs1aGK7G6u8= github.com/Azure/go-autorest/autorest/validation v0.2.0/go.mod h1:3EEqHnBxQGHXRYq3HT1WyXAvT7LLY3tl70hw6tQIbjI= -github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= -github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= -github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4= -github.com/AzureAD/microsoft-authentication-library-for-go v0.5.1/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4= -github.com/AzureAD/microsoft-authentication-library-for-go v0.8.1/go.mod h1:4qFor3D/HDsvBME35Xy9rwW9DecL+M2sNw1ybjPtwA0= -github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= @@ -718,45 +82,15 @@ github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbi github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/CycloneDX/cyclonedx-go v0.7.1 h1:5w1SxjGm9MTMNTuRbEPyw21ObdbaagTWF/KfF0qHTRE= github.com/CycloneDX/cyclonedx-go v0.7.1/go.mod h1:N/nrdWQI2SIjaACyyDs/u7+ddCkyl/zkNs8xFsHF2Ps= -github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/GoogleCloudPlatform/cloudsql-proxy v1.33.7/go.mod h1:JBp/RvKNOoIkR5BdMSXswBksHcPZ/41sbBV+GhSjgMY= github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20190822182118-27a4ced34534/go.mod h1:iroGtC8B3tQiqtds1l+mgk/BBOrxbqjH+eUfFQYRc14= -github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= -github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c h1:RGWPOewvKIROun94nF7v2cua9qP+thov/7M50KEoeSU= -github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0= github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= -github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= -github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= -github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/go-winio v0.4.17-0.20210324224401-5516f17a5958/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= -github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= -github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= -github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= -github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= -github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8= -github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= -github.com/Microsoft/hcsshim v0.8.15/go.mod h1:x38A4YbHbdxJtc0sF6oIz+RG0npwSCAvn69iY6URG00= -github.com/Microsoft/hcsshim v0.8.16/go.mod h1:o5/SZqmR7x9JNKsW3pu+nqHm0MF8vbA+VxGOoXdC600= -github.com/Microsoft/hcsshim v0.8.20/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= -github.com/Microsoft/hcsshim v0.8.21/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= -github.com/Microsoft/hcsshim v0.8.23/go.mod h1:4zegtUJth7lAvFyc6cH2gGQ5B3OFQim01nnU2M8jKDg= -github.com/Microsoft/hcsshim v0.9.2/go.mod h1:7pLA8lDk46WKDWlVsENo92gC0XFa8rbKfyFRBqxEbCc= -github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU= -github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:mw7qgWloBUl75W/gVH3cQszUg1+gUITj7D6NY7ywVnY= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= -github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= github.com/ProtonMail/go-crypto v0.0.0-20230518184743-7afd39499903 h1:ZK3C5DtzV2nVAQTx5S5jQvMeDqWtD1By5mOoyY/xJek= @@ -765,34 +99,16 @@ github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbt github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ= github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= -github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= -github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= -github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= -github.com/alecthomas/kingpin/v2 v2.3.1/go.mod h1:oYL5vtsvEHZGHxU7DMp32Dvx+qL+ptGn6lWaot2vCNE= -github.com/alecthomas/kingpin/v2 v2.3.2/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= -github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= -github.com/alexflint/go-filemutex v1.1.0/go.mod h1:7P4iRhttt/nUvUOrYIhcpMzv2G6CY9UnI16Z+UJqRyk= github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 h1:aM1rlcoLz8y5B2r4tTLMiVTrMtpfY0O8EScKJxaSaEc= github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092/go.mod h1:rYqSE9HbjzpHTI74vwPvae4ZVYZd1lue2ta6xHPdblA= github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY= github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0= -github.com/apache/arrow/go/v11 v11.0.0/go.mod h1:Eg5OsL5H+e299f7u5ssuXsuHQVEGC4xei5aX110hRiI= github.com/apache/arrow/go/v12 v12.0.0 h1:xtZE63VWl7qLdB0JObIXvvhGjoVNrQ9ciIHG2OK5cmc= github.com/apache/arrow/go/v12 v12.0.0/go.mod h1:d+tV/eHZZ7Dz7RPrFKtPK02tpr+c9/PEd/zm8mDS9Vg= github.com/apache/thrift v0.16.0 h1:qEy6UW60iVOlUy+b9ZR0d5WzUWYGOo4HfopoyBaNmoY= @@ -800,91 +116,38 @@ github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2 github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.3.3/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= -github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= -github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= -github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= 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/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/aws/aws-sdk-go v1.15.27/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= github.com/aws/aws-sdk-go v1.28.2/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.31.6/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= -github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= -github.com/aws/aws-sdk-go v1.40.45/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= -github.com/aws/aws-sdk-go v1.43.11/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go v1.43.31/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go v1.44.156/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= -github.com/aws/aws-sdk-go v1.44.245/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= -github.com/aws/aws-sdk-go v1.44.284 h1:Oc5Kubi43/VCkerlt3ZU3KpBju6BpNkoG3s7E8vj/O8= -github.com/aws/aws-sdk-go v1.44.284/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= -github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= -github.com/aws/aws-sdk-go-v2 v1.18.1 h1:+tefE750oAb7ZQGzla6bLkOwfcQCEtC5y2RqoqCeqKo= -github.com/aws/aws-sdk-go-v2 v1.18.1/go.mod h1:uzbQtefpm44goOPmdKyAlXSNcwlRgF3ePWVW6EtJvvw= +github.com/aws/aws-sdk-go v1.44.303 h1:GybJmj22u3KVMghsqYZoicS3NpiWiNaPE1+5bhvkxIs= +github.com/aws/aws-sdk-go v1.44.303/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go-v2 v1.19.0 h1:klAT+y3pGFBU/qVf1uzwttpBbiuozJYWzNLHioyDJ+k= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10 h1:dK82zF6kkPeCo8J1e+tGx4JdvDIQzj7ygIoLg8WMuGs= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.10/go.mod h1:VeTZetY5KRJLuD/7fkQXMU6Mw7H5m/KP2J5Iy9osMno= -github.com/aws/aws-sdk-go-v2/config v1.18.27 h1:Az9uLwmssTE6OGTpsFqOnaGpLnKDqNYOJzWuC6UAYzA= -github.com/aws/aws-sdk-go-v2/config v1.18.27/go.mod h1:0My+YgmkGxeqjXZb5BYme5pc4drjTnM+x1GJ3zv42Nw= -github.com/aws/aws-sdk-go-v2/credentials v1.13.26 h1:qmU+yhKmOCyujmuPY7tf5MxR/RKyZrOPO3V4DobiTUk= -github.com/aws/aws-sdk-go-v2/credentials v1.13.26/go.mod h1:GoXt2YC8jHUBbA4jr+W3JiemnIbkXOfxSXcisUsZ3os= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.4 h1:LxK/bitrAr4lnh9LnIS6i7zWbCOdMsfzKFBI6LUCS0I= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.4/go.mod h1:E1hLXN/BL2e6YizK1zFlYd8vsfi2GTjbjBazinMmeaM= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.70 h1:4bh28MeeXoBFTjb0JjQ5sVatzlf5xA1DziV8mZed9v4= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.70/go.mod h1:9yI5NXzqy2yOiMytv6QLZHvlyHLwYxO9iIq+bZIbrFg= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.34 h1:A5UqQEmPaCFpedKouS4v+dHCTUo2sKqhoKO9U5kxyWo= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.34/go.mod h1:wZpTEecJe0Btj3IYnDx/VlUzor9wm3fJHyvLpQF0VwY= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.28 h1:srIVS45eQuewqz6fKKu6ZGXaq6FuFg5NzgQBAM6g8Y4= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.28/go.mod h1:7VRpKQQedkfIEXb4k52I7swUnZP0wohVajJMRn3vsUw= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.35 h1:LWA+3kDM8ly001vJ1X1waCuLJdtTl48gwkPKWy9sosI= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.35/go.mod h1:0Eg1YjxE0Bhn56lx+SHJwCzhW+2JGtizsrx+lCqrfm0= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.26 h1:wscW+pnn3J1OYnanMnza5ZVYXLX4cKk5rAvUAl4Qu+c= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.26/go.mod h1:MtYiox5gvyB+OyP0Mr0Sm/yzbEAIPL9eijj/ouHAPw0= -github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o= +github.com/aws/aws-sdk-go-v2/config v1.18.28 h1:TINEaKyh1Td64tqFvn09iYpKiWjmHYrG1fa91q2gnqw= +github.com/aws/aws-sdk-go-v2/credentials v1.13.27 h1:dz0yr/yR1jweAnsCx+BmjerUILVPQ6FS5AwF/OyG1kA= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.5 h1:kP3Me6Fy3vdi+9uHd7YLr6ewPxRL+PU6y15urfTaamU= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.72 h1:m0MmP89v1B0t3b8W8rtATU76KNsodak69QtiokHyEvo= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.35 h1:hMUCiE3Zi5AHrRNGf5j985u0WyqI6r2NULhUfo0N/No= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.29 h1:yOpYx+FTBdpk/g+sBU6Cb1H0U/TLEcYYp66mYqsPpcc= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.36 h1:8r5m1BoAWkn0TDC34lUculryf7nUF25EgIMdjvGCkgo= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.27 h1:cZG7psLfqpkB6H+fIrgUDWmlzM474St1LP0jcz272yI= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11 h1:y2+VQzC6Zh2ojtV2LoC0MNwHWc6qXv/j2vrQtlftkdA= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.11/go.mod h1:iV4q2hsqtNECrfmlXyord9u4zyuFEJX9eLgLpSPzWA8= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.29 h1:zZSLP3v3riMOP14H7b4XP0uyfREDQOYv2cqIrvTXDNQ= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.29/go.mod h1:z7EjRjVwZ6pWcWdI2H64dKttvzaP99jRIj5hphW0M5U= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.28 h1:bkRyG4a929RCnpVSTvLM2j/T4ls015ZhhYApbmYs15s= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.28/go.mod h1:jj7znCIg05jXlaGBlFMGP8+7UN3VtCkRBG2spnmRQkU= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.3 h1:dBL3StFxHtpBzJJ/mNEsjXVgfO+7jR0dAIEwLqMapEA= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.3/go.mod h1:f1QyiAsvIv4B49DmCqrhlXqyaR+0IxMmyX+1P+AnzOM= -github.com/aws/aws-sdk-go-v2/service/kms v1.22.2/go.mod h1:aNfh11Smy55o65PB3MyKbkM8BFyFUcZmj1k+4g8eNfg= -github.com/aws/aws-sdk-go-v2/service/s3 v1.35.0 h1:ya7fmrN2fE7s1P2gaPbNg5MTkERVWfsH8ToP1YC4Z9o= -github.com/aws/aws-sdk-go-v2/service/s3 v1.35.0/go.mod h1:aVbf0sko/TsLWHx30c/uVu7c62+0EAJ3vbxaJga0xCw= -github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.19.10/go.mod h1:ezn6mzIRqTPdAbDpm03dx4y9g6rvGRb2q33wS76dCxw= -github.com/aws/aws-sdk-go-v2/service/sns v1.20.13/go.mod h1:rWrvp9i8y/lX94lS7Kn/0iu9RY6vXzeKRqS/knVX8/c= -github.com/aws/aws-sdk-go-v2/service/sqs v1.23.2/go.mod h1:TaV67b6JMD1988x/uMDop/JnMFK6v5d4Ru+sDmFg+ww= -github.com/aws/aws-sdk-go-v2/service/ssm v1.36.6/go.mod h1:NdyMyZH/FzmCaybTrVMBD0nTCGrs1G4cOPKHFywx9Ns= -github.com/aws/aws-sdk-go-v2/service/sso v1.12.12 h1:nneMBM2p79PGWBQovYO/6Xnc2ryRMw3InnDJq1FHkSY= -github.com/aws/aws-sdk-go-v2/service/sso v1.12.12/go.mod h1:HuCOxYsF21eKrerARYO6HapNeh9GBNq7fius2AcwodY= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.12 h1:2qTR7IFk7/0IN/adSFhYu9Xthr0zVFTgBrmPldILn80= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.12/go.mod h1:E4VrHCPzmVB/KFXtqBGKb3c8zpbNBgKe3fisDNLAW5w= -github.com/aws/aws-sdk-go-v2/service/sts v1.19.2 h1:XFJ2Z6sNUUcAz9poj+245DMkrHE4h2j5I9/xD50RHfE= -github.com/aws/aws-sdk-go-v2/service/sts v1.19.2/go.mod h1:dp0yLPsLBOi++WTxzCjA/oZqi6NPIhoR+uF7GeMU9eg= -github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.30 h1:Bje8Xkh2OWpjBdNfXLrnn8eZg569dUQmhgtydxAYyP0= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.29 h1:IiDolu/eLmuB18DRZibj77n1hHQT7z12jnGO7Ze3pLc= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.14.4 h1:hx4WksB0NRQ9utR+2c3gEGzl6uKj3eM6PMQ6tN3lgXs= +github.com/aws/aws-sdk-go-v2/service/s3 v1.37.0 h1:PalLOEGZ/4XfQxpGZFTLaoJSmPoybnqJYotaIZEf/Rg= +github.com/aws/aws-sdk-go-v2/service/sso v1.12.13 h1:sWDv7cMITPcZ21QdreULwxOOAmE05JjEsT6fCDtDA9k= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.13 h1:BFubHS/xN5bjl818QaroN6mQdjneYQ+AOx44KNXlyH4= +github.com/aws/aws-sdk-go-v2/service/sts v1.19.3 h1:e5mnydVdCVWxP+5rPAGi2PYxC7u2OZgH1ypC114H04U= github.com/aws/smithy-go v1.13.5 h1:hgz0X/DX0dGqTYpGALqXJoRKRj5oQ7150i5FdTePzO8= -github.com/aws/smithy-go v1.13.5/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= -github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= -github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= -github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/bombsimon/logrusr/v2 v2.0.1 h1:1VgxVNQMCvjirZIYaT9JYn6sAVGVEcNtRE0y4mvaOAM= github.com/bombsimon/logrusr/v2 v2.0.1/go.mod h1:ByVAX+vHdLGAfdroiMg6q0zgq2FODY2lc5YJvzmOJio= -github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/bradleyfalzon/ghinstallation/v2 v2.6.0 h1:IRY7Xy588KylkoycsUhFpW7cdGpy5Y5BPsz4IfuJtGk= github.com/bradleyfalzon/ghinstallation/v2 v2.6.0/go.mod h1:oQ3etOwN3TRH4EwgW5/7MxSVMGlMlzG/O8TU7eYdoSk= github.com/bradleyjkemp/cupaloy/v2 v2.8.0 h1:any4BmKE+jGIaMpnU8YgH/I2LPiLBufr6oMMlVBbn9M= @@ -893,211 +156,55 @@ github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7N github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/caarlos0/env/v6 v6.10.0 h1:lA7sxiGArZ2KkiqpOQNf8ERBRWI+v8MWIH+eGjSN22I= github.com/caarlos0/env/v6 v6.10.0/go.mod h1:hvp/ryKXKipEkcuYjs9mI4bBCg+UI0Yhgm5Zu0ddvwc= -github.com/casbin/casbin/v2 v2.37.0/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= -github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= -github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= -github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw= -github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= -github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= 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/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= -github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc= -github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= -github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= -github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= -github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= -github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= -github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= -github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20230112175826-46e39c7b9b43/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20230310173818-32f1caf87195/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= -github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= -github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= -github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be h1:J5BL2kskAlV9ckgEsNQXscjIaLiOYiZ75d4e94E6dcQ= github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be/go.mod h1:mk5IQ+Y0ZeO87b858TlA645sVcEcbiX6YqP98kt+7+w= -github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= -github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= -github.com/containerd/aufs v0.0.0-20210316121734-20793ff83c97/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= -github.com/containerd/aufs v1.0.0/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= -github.com/containerd/btrfs v0.0.0-20201111183144-404b9149801e/go.mod h1:jg2QkJcsabfHugurUvvPhS3E08Oxiuh5W/g1ybB4e0E= -github.com/containerd/btrfs v0.0.0-20210316141732-918d888fb676/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= -github.com/containerd/btrfs v1.0.0/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= -github.com/containerd/cgroups v0.0.0-20190717030353-c4b9ac5c7601/go.mod h1:X9rLEHIqSf/wfK8NsPqxJmeZgW4pcfzdXITDrUSJ6uI= -github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= -github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= -github.com/containerd/cgroups v0.0.0-20200710171044-318312a37340/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= -github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= -github.com/containerd/cgroups v0.0.0-20210114181951-8a68de567b68/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= -github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= -github.com/containerd/cgroups v1.0.3/go.mod h1:/ofk34relqNjSGyqPrmEULrO4Sc8LJhvJmWbUCUKqj8= -github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= -github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= -github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= -github.com/containerd/console v1.0.1/go.mod h1:XUsP6YE/mKtz6bxc+I8UiKKTP04qjQL4qcS3XoQ5xkw= -github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= -github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= -github.com/containerd/containerd v1.2.10/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.1-0.20191213020239-082f7e3aed57/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.0-beta.2.0.20200729163537-40b22ef07410/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.3/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.9/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.5.0-beta.1/go.mod h1:5HfvG1V2FsKesEGQ17k5/T7V960Tmcumvqn8Mc+pCYQ= -github.com/containerd/containerd v1.5.0-beta.3/go.mod h1:/wr9AVtEM7x9c+n0+stptlo/uBBoBORwEx6ardVcmKU= -github.com/containerd/containerd v1.5.0-beta.4/go.mod h1:GmdgZd2zA2GYIBZ0w09ZvgqEq8EfBp/m3lcVZIvPHhI= -github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoTJseu1FGOKuoA4nNb2s= -github.com/containerd/containerd v1.5.1/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g= -github.com/containerd/containerd v1.5.7/go.mod h1:gyvv6+ugqY25TiXxcZC3L5yOeYgEw0QMhscqVp1AR9c= -github.com/containerd/containerd v1.5.8/go.mod h1:YdFSv5bTFLpG2HIYmfqDpSYYTDX+mc5qtSuYx1YUb/s= -github.com/containerd/containerd v1.6.1/go.mod h1:1nJz5xCZPusx6jJU8Frfct988y0NpumIq9ODB0kLtoE= -github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20190815185530-f2a389ac0a02/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20191127005431-f65d91d395eb/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe/go.mod h1:cECdGN1O8G9bgKTlLhuPJimka6Xb/Gg7vYzCTNVxhvo= -github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y= -github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e/go.mod h1:EXlVlkqNba9rJe3j7w3Xa924itAMLgZH4UD/Q4PExuQ= -github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM= -github.com/containerd/continuity v0.2.2/go.mod h1:pWygW9u7LtS1o4N/Tn0FoCFDIXZ7rxcMX7HX1Dmibvk= -github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/containerd/fifo v0.0.0-20200410184934-f15a3290365b/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= -github.com/containerd/fifo v0.0.0-20201026212402-0724c46b320c/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= -github.com/containerd/fifo v0.0.0-20210316144830-115abcc95a1d/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= -github.com/containerd/fifo v1.0.0/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= -github.com/containerd/go-cni v1.0.1/go.mod h1:+vUpYxKvAF72G9i1WoDOiPGRtQpqsNW/ZHtSlv++smU= -github.com/containerd/go-cni v1.0.2/go.mod h1:nrNABBHzu0ZwCug9Ije8hL2xBCYh/pjfMb1aZGrrohk= -github.com/containerd/go-cni v1.1.0/go.mod h1:Rflh2EJ/++BA2/vY5ao3K6WJRR/bZKsX123aPk+kUtA= -github.com/containerd/go-cni v1.1.3/go.mod h1:Rflh2EJ/++BA2/vY5ao3K6WJRR/bZKsX123aPk+kUtA= -github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= -github.com/containerd/go-runc v0.0.0-20190911050354-e029b79d8cda/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= -github.com/containerd/go-runc v0.0.0-20200220073739-7016d3ce2328/go.mod h1:PpyHrqVs8FTi9vpyHwPwiNEGaACDxT/N/pLcvMSRA9g= -github.com/containerd/go-runc v0.0.0-20201020171139-16b287bc67d0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= -github.com/containerd/go-runc v1.0.0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= -github.com/containerd/imgcrypt v1.0.1/go.mod h1:mdd8cEPW7TPgNG4FpuP3sGBiQ7Yi/zak9TYCG3juvb0= -github.com/containerd/imgcrypt v1.0.4-0.20210301171431-0ae5c75f59ba/go.mod h1:6TNsg0ctmizkrOgXRNQjAPFWpMYRWuiB6dSF4Pfa5SA= -github.com/containerd/imgcrypt v1.1.1-0.20210312161619-7ed62a527887/go.mod h1:5AZJNI6sLHJljKuI9IHnw1pWqo/F0nGDOuR9zgTs7ow= -github.com/containerd/imgcrypt v1.1.1/go.mod h1:xpLnwiQmEUJPvQoAapeb2SNCxz7Xr6PJrXQb0Dpc4ms= -github.com/containerd/imgcrypt v1.1.3/go.mod h1:/TPA1GIDXMzbj01yd8pIbQiLdQxed5ue1wb8bP7PQu4= -github.com/containerd/nri v0.0.0-20201007170849-eb1350a75164/go.mod h1:+2wGSDGFYfE5+So4M5syatU0N0f0LbWpuqyMi4/BE8c= -github.com/containerd/nri v0.0.0-20210316161719-dbaa18c31c14/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= -github.com/containerd/nri v0.1.0/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= -github.com/containerd/stargz-snapshotter/estargz v0.4.1/go.mod h1:x7Q9dg9QYb4+ELgxmo4gBUeJB0tl5dqH1Sdz0nJU1QM= github.com/containerd/stargz-snapshotter/estargz v0.14.3 h1:OqlDCK3ZVUO6C3B/5FSkDwbkEETK84kQgEeFwDC+62k= github.com/containerd/stargz-snapshotter/estargz v0.14.3/go.mod h1:KY//uOCIkSuNAHhJogcZtrNHdKrA99/FCCRjE3HD36o= -github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= -github.com/containerd/ttrpc v0.0.0-20190828172938-92c8520ef9f8/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= -github.com/containerd/ttrpc v0.0.0-20191028202541-4f1b8fe65a5c/go.mod h1:LPm1u0xBw8r8NOKoOdNMeVHSawSsltak+Ihv+etqsE8= -github.com/containerd/ttrpc v1.0.1/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= -github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= -github.com/containerd/ttrpc v1.1.0/go.mod h1:XX4ZTnoOId4HklF4edwc4DcqskFZuvXB1Evzy5KFQpQ= -github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= -github.com/containerd/typeurl v0.0.0-20190911142611-5eb25027c9fd/go.mod h1:GeKYzf2pQcqv7tJ0AoCuuhtnqhva5LNU3U+OyKxxJpk= -github.com/containerd/typeurl v1.0.1/go.mod h1:TB1hUtrpaiO88KEK56ijojHS1+NeF0izUACaJW2mdXg= -github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= github.com/containerd/typeurl/v2 v2.1.1 h1:3Q4Pt7i8nYwy2KmQWIw2+1hTvwTE/6w9FqcttATPO/4= github.com/containerd/typeurl/v2 v2.1.1/go.mod h1:IDp2JFvbwZ31H8dQbEIY7sDl2L3o3HZj1hsSQlywkQ0= -github.com/containerd/zfs v0.0.0-20200918131355-0a33824f23a2/go.mod h1:8IgZOBdv8fAgXddBT4dBXJPtxyRsejFIpXoklgxgEjw= -github.com/containerd/zfs v0.0.0-20210301145711-11e8f1707f62/go.mod h1:A9zfAbMlQwE+/is6hi0Xw8ktpL+6glmqZYtevJgaB8Y= -github.com/containerd/zfs v0.0.0-20210315114300-dde8f0fda960/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= -github.com/containerd/zfs v0.0.0-20210324211415-d5c4544f0433/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= -github.com/containerd/zfs v1.0.0/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= -github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= -github.com/containernetworking/cni v0.8.0/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= -github.com/containernetworking/cni v0.8.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= -github.com/containernetworking/cni v1.0.1/go.mod h1:AKuhXbN5EzmD4yTNtfSsX3tPcmtrBI6QcRV0NiNt15Y= -github.com/containernetworking/plugins v0.8.6/go.mod h1:qnw5mN19D8fIwkqW7oHHYDHVlzhJpcY6TQxn/fUyDDM= -github.com/containernetworking/plugins v0.9.1/go.mod h1:xP/idU2ldlzN6m4p5LmGiwRDjeJr6FLK6vuiUwoH7P8= -github.com/containernetworking/plugins v1.0.1/go.mod h1:QHCfGpaTwYTbbH+nZXKVTxNBDZcxSOplJT5ico8/FLE= -github.com/containers/ocicrypt v1.0.1/go.mod h1:MeJDzk1RJHv89LjsH0Sp5KTY3ZYkjXO/C+bKAeWFIrc= -github.com/containers/ocicrypt v1.1.0/go.mod h1:b8AOe0YR67uU8OqfVNcznfFpAzu3rdgUV4GP9qXPfu4= -github.com/containers/ocicrypt v1.1.1/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= -github.com/containers/ocicrypt v1.1.2/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-iptables v0.4.5/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= -github.com/coreos/go-iptables v0.5.0/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= -github.com/coreos/go-iptables v0.6.0/go.mod h1:Qe8Bv2Xik5FyTXwgIbLAnv2sWSBmvWdFETJConOQ//Q= github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20161114122254-48702e0da86b/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= -github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/go-systemd/v22 v22.4.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= -github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= -github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ= -github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= -github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= -github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I= github.com/d4l3k/messagediff v1.2.1/go.mod h1:Oozbb1TVXFac9FtSIxHBMnBCq2qeH/2KkEQxENCrlLo= github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA= -github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dgryski/go-sip13 v0.0.0-20200911182023-62edffca9245/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/digitalocean/godo v1.78.0/go.mod h1:GBmu8MkjZmNARE7IXRPmkbbnocNN8+uBm0xbEVw2LCs= -github.com/digitalocean/godo v1.98.0/go.mod h1:NRpFznZFvhHjBoqZAaOD3khVzsJ3EibzKqFL4R60dmA= github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= -github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= -github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/cli v24.0.2+incompatible h1:QdqR7znue1mtkXIJ+ruQMGQhpw2JzMJLRXp6zpzF6tM= github.com/docker/cli v24.0.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= @@ -1105,33 +212,20 @@ github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m3 github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.14+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v23.0.4+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v24.0.0-rc.2.0.20230706181717-98d3da79ef9c+incompatible h1:XccikgvtGCEZE9ZQoaEApdx9ZvruGYakfi2tw4d/vUg= -github.com/docker/docker v24.0.0-rc.2.0.20230706181717-98d3da79ef9c+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v24.0.2+incompatible h1:eATx+oLz9WdNVkQrr0qjQ8HvRJ4bOOxfzEo8R+dA3cg= +github.com/docker/docker v24.0.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A= github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-events v0.0.0-20170721190031-9461782956ad/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= -github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= -github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/elazarl/goproxy v0.0.0-20221015165544-a0805db90819 h1:RIB4cRk+lBqKK3Oy0r2gRX4ui7tuhiZq2SuTtTCi0/0= github.com/emicklei/go-restful v2.16.0+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/emicklei/go-restful/v3 v3.10.1 h1:rc42Y5YTp7Am7CS630D7JmhRjq4UlEUuEKfrDac4bSQ= github.com/emicklei/go-restful/v3 v3.10.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= @@ -1139,66 +233,24 @@ github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FM github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.10.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= -github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= -github.com/envoyproxy/go-control-plane v0.11.0/go.mod h1:VnHyVMpzcLvCFt9yUz1UnCwHLhwx1WguiVDV7pTG/tI= -github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= -github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= -github.com/envoyproxy/protoc-gen-validate v0.10.0/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= -github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= github.com/evanphx/json-patch v0.0.0-20200808040245-162e5629780b/go.mod h1:NAJj0yf/KaRKURN6nyi7A9IZydMivZEm9oQLWNjfKDc= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= -github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= -github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= -github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.14.1 h1:qfhVLaG5s+nCROl1zJsZRxFeYrHLqWroPOQ8BWiNb4w= github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg= -github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= -github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= -github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -github.com/franela/goblin v0.0.0-20210519012713-85d372ac71e2/go.mod h1:VzmDKDJVZI3aJmnRI9VjAn9nJ8qPPsN1fqzr9dqInIo= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= -github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= github.com/frankban/quicktest v1.14.5 h1:dfYrrRyLtiqT9GyKXgdh+k4inNeTvmGbuSgZ3lx3GhA= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= -github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= -github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= -github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= -github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= -github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= -github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= -github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= -github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= -github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= -github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= -github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= github.com/go-git/go-billy/v5 v5.4.1 h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4= @@ -1209,165 +261,53 @@ github.com/go-git/go-git/v5 v5.7.0/go.mod h1:coJHKEOk5kUClpsNlXrUvPrDxY3w3gjHvhc github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.12.0/go.mod h1:lHd+EkCZPIwYItmGDDRdhinkzX2A1sj+M9biaEaizzs= -github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= -github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= -github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v1.0.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.1/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jTKKwI= -github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-openapi/analysis v0.21.2/go.mod h1:HZwRk4RRisyG8vx2Oe6aqeSQcoxRp47Xkp3+K6q+LdY= -github.com/go-openapi/analysis v0.21.4/go.mod h1:4zQ35W4neeZTqh3ol0rv/O8JBbka9QyAgQRPp9y3pfo= -github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= -github.com/go-openapi/errors v0.19.9/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= -github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= -github.com/go-openapi/errors v0.20.3/go.mod h1:Z3FlZ4I8jEGxjUK+bugx3on2mIAk4txuAOhlsB1FSgk= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= -github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= -github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= -github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= -github.com/go-openapi/jsonreference v0.20.1/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= -github.com/go-openapi/loads v0.21.1/go.mod h1:/DtAMXXneXFjbQMGEtbamCZb+4x7eGwkvZCvBmwUG+g= -github.com/go-openapi/loads v0.21.2/go.mod h1:Jq58Os6SSGz0rzh62ptiu8Z31I+OTHqmULx5e/gJbNw= -github.com/go-openapi/runtime v0.23.1/go.mod h1:AKurw9fNre+h3ELZfk6ILsfvPN+bvvlaU/M9q/r9hpk= -github.com/go-openapi/runtime v0.25.0/go.mod h1:Ux6fikcHXyyob6LNWxtE96hWwjBPYF0DXgVFuMTneOs= github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= -github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= -github.com/go-openapi/spec v0.20.6/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= -github.com/go-openapi/spec v0.20.7/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= -github.com/go-openapi/spec v0.20.8/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= -github.com/go-openapi/strfmt v0.21.0/go.mod h1:ZRQ409bWMj+SOgXofQAGTIo2Ebu72Gs+WaRADcS5iNg= -github.com/go-openapi/strfmt v0.21.1/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k= -github.com/go-openapi/strfmt v0.21.2/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k= -github.com/go-openapi/strfmt v0.21.3/go.mod h1:k+RzNO0Da+k3FrrynSNN8F7n/peCmQQqbbXjtDfvmGg= -github.com/go-openapi/strfmt v0.21.7/go.mod h1:adeGTkxE44sPyLk0JV235VQAO/ZXUr8KAzYjclFs3ew= github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-openapi/validate v0.21.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= -github.com/go-openapi/validate v0.22.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= -github.com/go-openapi/validate v0.22.1/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= -github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= -github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= -github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= -github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= -github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= -github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= -github.com/go-zookeeper/zk v1.0.2/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= -github.com/go-zookeeper/zk v1.0.3/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= github.com/goark/errs v1.1.0 h1:FKnyw4LVyRADIjM8Nj0Up6r0/y5cfADvZAd1E+tthXE= github.com/goark/errs v1.1.0/go.mod h1:TtaPEoadm2mzqzfXdkkfpN2xuniCFm2q4JH+c1qzaqw= github.com/goark/go-cvss v1.6.6 h1:WJFuIWqmAw1Ilb9USv0vuX+nYzOWJp8lIujseJ/y3sU= github.com/goark/go-cvss v1.6.6/go.mod h1:H3qbfUSUlV7XtA3EwWNunvXz6OySwWHOuO+R6ZPMQPI= -github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= -github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= -github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= -github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= -github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= -github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs= -github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= -github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= -github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk= -github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28= -github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo= -github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk= -github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw= -github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360= -github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg= -github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE= -github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8= -github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= -github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= -github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= -github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= -github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= -github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= -github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= -github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/goccy/go-yaml v1.9.5/go.mod h1:U/jl18uSupI5rdI2jmuCswEA2htH9eXfferR3KfscvA= -github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= -github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= -github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= -github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gofrs/uuid v4.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gofrs/uuid v4.3.1+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU= -github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= -github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= -github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/golang-jwt/jwt/v4 v4.4.3/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= -github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= -github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -1381,9 +321,7 @@ github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfb github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= @@ -1392,8 +330,6 @@ github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -1403,21 +339,15 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/flatbuffers v2.0.8+incompatible h1:ivUb1cGomAB101ZM1T0nOiWz9pSrTMoa9+EiY7igmkM= github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= -github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= github.com/google/gnostic v0.6.9 h1:ZK/5VhkoX835RikCHpSUJV9a+S3e1zLh59YnyWeBW+0= github.com/google/gnostic v0.6.9/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -1426,290 +356,119 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-containerregistry v0.2.1/go.mod h1:Ts3Wioz1r5ayWx8sS6vLcWltWcM1aqFjd/eVrkFhrWM= -github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= github.com/google/go-containerregistry v0.15.2 h1:MMkSh+tjSdnmJZO7ljvEqV1DjfekB6VUEAZgy3a+TQE= github.com/google/go-containerregistry v0.15.2/go.mod h1:wWK+LnOv4jXMM23IT/F1wdYftGWGr47Is8CG+pmHK1Q= github.com/google/go-github/v38 v38.1.0 h1:C6h1FkaITcBFK7gAmq4eFzt6gbhEhk7L5z6R3Uva+po= github.com/google/go-github/v38 v38.1.0/go.mod h1:cStvrz/7nFr0FoENgG6GLbp53WaelXucT+BBz/3VKx4= github.com/google/go-github/v53 v53.2.0 h1:wvz3FyF53v4BK+AsnvCmeNhf8AkTaeh2SoYu/XUvTtI= github.com/google/go-github/v53 v53.2.0/go.mod h1:XhFRObz+m/l+UCm9b7KSIC3lT3NWSXGt7mOsAWEloao= -github.com/google/go-pkcs11 v0.2.0/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/go-replayers/grpcreplay v1.1.0 h1:S5+I3zYyZ+GQz68OfbURDdt/+cSMqCK1wrvNx7WBzTE= -github.com/google/go-replayers/grpcreplay v1.1.0/go.mod h1:qzAvJ8/wi57zq7gWqaE6AwLM6miiXUQwP1S+I9icmhk= github.com/google/go-replayers/httpreplay v1.2.0 h1:VM1wEyyjaoU53BwrOnaf9VhAyQQEEioJvFYxYcLRKzk= -github.com/google/go-replayers/httpreplay v1.2.0/go.mod h1:WahEFFZZ7a1P4VM1qEeHy+tME4bwyqPcwWbNlUI1Mcg= github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible h1:xmapqc1AyLoB+ddYT6r04bD9lIjlOqGaREovi0SzFaE= -github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= -github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/osv-scanner v1.3.6 h1:8oZxk2HfdMjsLZ/NIidEEb2srcIP8301hKbR+FPXaPo= github.com/google/osv-scanner v1.3.6/go.mod h1:Yl29UCfOjWRA/wQLmvK0Ehs7HztmRqtgvHa3SomAJFo= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210506205249-923b5ab0fc1a/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20220318212150-b2ab0324ddda/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= -github.com/google/pprof v0.0.0-20230406165453-00490a63f317 h1:hFhpt7CTmR3DX+b4R19ydQFtofxT0Sv3QsKNMVQYTMQ= -github.com/google/pprof v0.0.0-20230406165453-00490a63f317/go.mod h1:79YE0hCXdHag9sBkw2o+N/YnZtTkXi0UT9Nnixa5eYk= +github.com/google/pprof v0.0.0-20230602150820-91b7bce49751 h1:hR7/MlvK23p6+lIw9SN1TigNLn9ZnF3W4SYRKq2gAHs= +github.com/google/pprof v0.0.0-20230602150820-91b7bce49751/go.mod h1:Jh3hGz2jkYak8qXPD19ryItVnUgpgeqzdkY/D0EaeuA= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.0/go.mod h1:OJpEgntRZo8ugHpF9hkoLJbS5dSI20XZeXJ9JVywLlM= -github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/wire v0.5.0 h1:I7ELFeVBr3yfPIcc8+MWvrjk+3VjbcSzoXm3JVa+jD8= github.com/google/wire v0.5.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU= -github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= -github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= -github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= -github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/enterprise-certificate-proxy v0.2.5 h1:UR4rDjcgpgEnqpIEvkiqTYKBCKLNmlge2eVjoZfySzM= github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= -github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= -github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= -github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= -github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= -github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= -github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= -github.com/googleapis/gax-go/v2 v2.9.1/go.mod h1:4FG3gMrVZlyMp5itSYKMU9z/lBE7+SbnUOvzH2HqbEY= -github.com/googleapis/gax-go/v2 v2.10.0/go.mod h1:4UOEnMCrxsSqQ940WnTiD6qJ63le2ev3xfyagutxiPw= -github.com/googleapis/gax-go/v2 v2.11.0 h1:9V9PWXEsWnPpQhu/PeQIkS4eGzMlTLGgt80cUUI8Ki4= -github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= +github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= +github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.2.2/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= -github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= -github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= -github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= -github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= -github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= -github.com/gophercloud/gophercloud v0.24.0/go.mod h1:Q8fZtyi5zZxPS/j9aj3sSxtvj41AdQMDwyo1myduD5c= -github.com/gophercloud/gophercloud v1.3.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= -github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grafana/regexp v0.0.0-20220304095617-2e8d9baf4ac2/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A= -github.com/grafana/regexp v0.0.0-20221122212121-6b5c0a4cb7fd/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A= github.com/grafeas/kritis v0.2.3-0.20210120183821-faeba81c520c h1:VZq2x/CpmG4wyKTBeMSIOT0OJ9Xhq15mLIUhcmAla8w= github.com/grafeas/kritis v0.2.3-0.20210120183821-faeba81c520c/go.mod h1:vpHFPcOUWU8DeNcf5lxvwXOGYV7jmo81wslbrjeoUqc= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.15.2/go.mod h1:7pdNwVWBBHGiCxa9lAszqCJMbfTISJ7oMftp8+UGV08= github.com/h2non/filetype v1.1.3 h1:FKkx9QbD7HR/zjK1Ia5XiBsq9zdLi5Kf3zGyFTAFkGg= github.com/h2non/filetype v1.1.3/go.mod h1:319b3zT68BvV+WRj7cwy856M2ehB3HqNOt6sy1HndBY= -github.com/hanwen/go-fuse/v2 v2.3.0/go.mod h1:xKwi1cF7nXAOBCXujD5ie0ZKsxc8GGSA1rlMJc+8IJs= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= -github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= -github.com/hashicorp/consul/api v1.20.0/go.mod h1:nR64eD44KQ59Of/ECwt2vUmIK2DKsDzAwTmwmLl8Wpo= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= -github.com/hashicorp/consul/sdk v0.13.1/go.mod h1:SW/mM4LbKfqmMvcFu8v+eiQQ7oitXEFeiBe9StxERb0= -github.com/hashicorp/cronexpr v1.1.1/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= -github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= -github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v0.12.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v0.16.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v1.4.0 h1:ctuWFGrhFha8BnnzxqeRGidlEcQkDyL5u8J8t5eA11I= -github.com/hashicorp/go-hclog v1.4.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-immutable-radix v1.2.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= -github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= github.com/hashicorp/go-retryablehttp v0.7.2 h1:AcYqCvkpalPnPF2pn0KamgwamS42TqUDDYFRKq/RAd0= github.com/hashicorp/go-retryablehttp v0.7.2/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/golang-lru v0.6.0/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= -github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/memberlist v0.3.1/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0= -github.com/hashicorp/nomad/api v0.0.0-20230418003350-3067191c5197/go.mod h1:2TCrNvonL09r7EiQ6M2rNt+Cmjbn1QbzchFoTWJFpj4= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= -github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= -github.com/hashicorp/serf v0.9.7/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= -github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= -github.com/hetznercloud/hcloud-go v1.33.1/go.mod h1:XX/TQub3ge0yWR2yHWmnDVIrB+MQbda1pHxkUmDlUME= -github.com/hetznercloud/hcloud-go v1.42.0/go.mod h1:YADL8AbmQYH0Eo+1lkuyoc8LutT0UeMvaKP47nNUb+Y= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/hudl/fargo v1.4.0/go.mod h1:9Ai6uvFy5fQNq6VPKtg+Ceq1+eTY4nKUlR2JElEOcDo= -github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= -github.com/ianlancetaylor/demangle v0.0.0-20220517205856-0058ec4f073c/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/influxdata/influxdb1-client v0.0.0-20200827194710-b269163b24ab/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/intel/goresctrl v0.2.0/go.mod h1:+CZdzouYFn5EsxgqAQTEzMfwKwuc0fVdMrT9FCCAVRQ= -github.com/ionos-cloud/sdk-go/v6 v6.1.6/go.mod h1:EzEgRIDxBELvfoa/uBN0kOQaqovLjUWEB7iW4/Q+t4k= -github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= -github.com/j-keck/arping v1.0.2/go.mod h1:aJbELhR92bSk7tp79AWM/ftfc90EfEi2bQJrbBFOsPw= -github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= -github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= -github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= -github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA= -github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW9/pnVKPazfWOgNfH2aPem8YQ7ilXGvJE= -github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s= -github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o= -github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY= -github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= -github.com/jackc/pgconn v1.14.0/go.mod h1:9mBNlny0UvkgJdCDvdVHYSjI+8tD2rnKK69Wz8ti++E= -github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= -github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE= -github.com/jackc/pgmock v0.0.0-20201204152224-4fe30f7445fd/go.mod h1:hrBW0Enj2AZTNpt/7Y5rr2xe/9Mn757Wtb2xeBzPv2c= -github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak= -github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= -github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78= -github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA= -github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg= -github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= -github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= -github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgproto3/v2 v2.3.2/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= -github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= -github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= -github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= -github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= -github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM= -github.com/jackc/pgtype v1.14.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= -github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= -github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= -github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= -github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs= -github.com/jackc/pgx/v4 v4.18.1/go.mod h1:FydWkUyadDmdNH/mHnGob881GawxeEm7TcMCzkb+qQE= -github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jackc/puddle v1.3.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jarcoal/httpmock v1.3.0/go.mod h1:3yb8rc4BI7TCBhFY8ng0gjuLKJNquuDNiPaZjnENuYg= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= -github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= -github.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM= -github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= -github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg= -github.com/jcmturner/gokrb5/v8 v8.4.2/go.mod h1:sb+Xq/fTY5yktf/VxLsE3wlfPqQjp0aWNYyvBVK62bc= -github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= github.com/jedib0t/go-pretty/v6 v6.4.6 h1:v6aG9h6Uby3IusSSEjHaZNXpHFhzqMmjXcPq1Rjl9Jw= github.com/jedib0t/go-pretty/v6 v6.4.6/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= -github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= @@ -1717,19 +476,14 @@ github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHW github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= -github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= @@ -1738,12 +492,6 @@ github.com/jszwec/csvutil v1.8.0 h1:G7vS2LGdpZZDH1HmHeNbxOaJ/ZnJlpwGFvOkTkJzzNk= github.com/jszwec/csvutil v1.8.0/go.mod h1:/E4ONrmGkwmWsk9ae9jpXnv9QT8pLHEPcCirMFhxG9I= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= -github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= -github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= -github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= -github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= @@ -1752,81 +500,37 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= -github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= -github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid/v2 v2.0.9 h1:lgaqFMSdTdQYdZ04uHyN2d/eKdOMyi2YLSvlQIBFYa4= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= -github.com/kolo/xmlrpc v0.0.0-20220921171641-a4b6fa1dd06b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= -github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/linode/linodego v1.4.0/go.mod h1:PVsRxSlOiJyvG4/scTszpmZDTdgS+to3X6eS8pRrWI8= -github.com/linode/linodego v1.16.1/go.mod h1:aESRAbpLY9R6IA1WGAWHikRI9DU9Lhesapv1MhKmPHM= -github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3/go.mod h1:3r6x7q95whyfWQpmGZTu3gk3v2YkMi05HEzl7Tf7YEo= -github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= -github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= -github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= -github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= -github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A= github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -1834,60 +538,26 @@ github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzp github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= -github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= -github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= -github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/matttproud/golang_protobuf_extensions v1.0.2/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/maxatome/go-testdeep v1.12.0/go.mod h1:lPZc/HAcJMP92l7yI6TRz1aZN5URwUBUAfUNvrclaNM= github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= github.com/mcuadros/go-jsonschema-generator v0.0.0-20200330054847-ba7a369d4303 h1:mc6Th1b2xkPDUHTIUynE0LMJUgPEJdIDUjBLvj8yprs= github.com/mcuadros/go-jsonschema-generator v0.0.0-20200330054847-ba7a369d4303/go.mod h1:O6IeMrJ2EU+kDaxu7Dchbd0fbmrsTcjg8SGYFVJCr5A= -github.com/microsoft/ApplicationInsights-Go v0.4.4/go.mod h1:fKRUseBqkw6bDiXTs3ESTiU/4YTIHsQS4W3fP2ieF4U= -github.com/microsoft/go-mssqldb v0.21.0/go.mod h1:+4wZTUnz/SV6nffv+RRRB/ss8jPng5Sho2SmM1l2ts4= github.com/miekg/dns v1.1.25-0.20191211073109-8ebf2e419df7/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= -github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 h1:AMFGa4R4MiIpspGNG7Z948v4n35fFGB3RR3G/ry4FWs= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 h1:+n/aFZefKZp7spd8DFdX7uMikMLXX4oubIzJF4kv/wI= github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= -github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= -github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= -github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/moby/buildkit v0.12.0 h1:hgPDVSeondFLb28cBtRR5O0N4t8uWGJ4YNukT2aICIs= github.com/moby/buildkit v0.12.0/go.mod h1:+n9GmkxwBCjVz4u7wmiyh+oqvjIjQM+1zk3iJrWfdos= -github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= -github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= -github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= -github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= -github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= -github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= -github.com/moby/sys/signal v0.6.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= -github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ= -github.com/moby/sys/symlink v0.2.0/go.mod h1:7uZVF2dqJjG/NsClqul95CqKOBRQyYSNnJ6BMgR/gFs= -github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= -github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= -github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -1896,208 +566,80 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= -github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= -github.com/montanaflynn/stats v0.6.6/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= -github.com/montanaflynn/stats v0.7.0/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/nats-io/jwt v1.2.2/go.mod h1:/xX356yQA6LuXI9xWW7mZNpxgF2mBmGecH+Fj34sP5Q= -github.com/nats-io/jwt/v2 v2.0.3/go.mod h1:VRP+deawSXyhNjXmxPCHskrR6Mq50BqpEI5SEcNiGlY= -github.com/nats-io/nats-server/v2 v2.5.0/go.mod h1:Kj86UtrXAL6LwYRA6H4RqzkHhK0Vcv2ZnKD5WbQ1t3g= -github.com/nats-io/nats.go v1.12.1/go.mod h1:BPko4oXsySz4aSWeFgOHLZs3G4Jq4ZAyE6/zMCxRT6w= -github.com/nats-io/nkeys v0.2.0/go.mod h1:XdZpAbhgyyODYqjTawOnIOI7VlbKSarI9Gfy1tqEu/s= -github.com/nats-io/nkeys v0.3.0/go.mod h1:gvUNGjVcM2IPr5rCsRsC6Wb3Hr2CQAm08dsxtV6A5y4= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= -github.com/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= -github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/ginkgo v1.14.2/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU= -github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk= -github.com/onsi/ginkgo/v2 v2.3.0/go.mod h1:Eew0uilEqZmIEZr8JrvYlvOM7Rr6xzTmMV8AyFNU9d0= -github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo= github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU= github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM= -github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= -github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= -github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= -github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= -github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo= -github.com/onsi/gomega v1.21.1/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc= -github.com/onsi/gomega v1.22.1/go.mod h1:x6n7VNe4hw0vkyYUM4mjIXx3JbLiPaBPNgB7PRQ1tuM= -github.com/onsi/gomega v1.23.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg= github.com/onsi/gomega v1.27.8 h1:gegWiwZjBsf2DgiSbf5hpokZ98JVDMcWkUiigk6/KXc= github.com/onsi/gomega v1.27.8/go.mod h1:2J8vzI/s+2shY9XHRApDkdgPo1TKT7P2u6fXeJKFnNQ= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v1.0.0-rc1.0.20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0= -github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= -github.com/opencontainers/runc v1.1.0/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc= -github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= -github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE= -github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo= -github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= -github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= -github.com/openzipkin/zipkin-go v0.2.5/go.mod h1:KpXfKdgRDnnhsxw4pNIH9Md5lyFqKUa4YDFlwRYAMyE= github.com/otiai10/copy v1.12.0 h1:cLMgSQnXBs1eehF0Wy/FAGsgDTDmAqFR7rQylBb1nDY= github.com/otiai10/copy v1.12.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= -github.com/ovh/go-ovh v1.4.1/go.mod h1:6bL6pPyUT7tBfI0pqOegJgRjgjuO+mOo+MyXd1EEC0M= github.com/package-url/packageurl-go v0.1.1 h1:KTRE0bK3sKbFKAk3yy63DpeskU7Cvs/x/Da5l+RtzyU= github.com/package-url/packageurl-go v0.1.1/go.mod h1:uQd4a7Rh3ZsVg5j0lNyAfyxIeGde9yrlhjF78GzeW0c= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= -github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= -github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas= -github.com/performancecopilot/speed/v4 v4.0.0/go.mod h1:qxrSyuDGrTOWfV+uKRFhfxw6h/4HXRGUiZiufxo49BM= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= -github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= -github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= -github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= -github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4/v4 v4.1.15 h1:MO0/ucJhngq7299dKLwIMtgTfbkoSPF6AoMYDd8Q4q0= github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= -github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= -github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pkg/profile v1.6.0/go.mod h1:qBsxPvzyUincmltOk6iyRVxHYg4adc0OFOv72ZdLa18= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= -github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= -github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= -github.com/prometheus/alertmanager v0.24.0/go.mod h1:r6fy/D7FRuZh5YbnX6J3MBY0eI4Pb5yPYS7/bPSXXqI= -github.com/prometheus/alertmanager v0.25.0/go.mod h1:MEZ3rFVHqKZsw7IcNS/m4AWZeXThmJhumpiWR4eHU/w= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= -github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.13.0/go.mod h1:vTeo+zgvILHsnnj/39Ou/1fPN5nJFOEMgftOUOmlvYQ= -github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= -github.com/prometheus/client_golang v1.15.0/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.29.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.34.0/go.mod h1:gB3sOl7P0TvJabZpLY5uQMpUqRCPPCyRLCZYc7JZTNE= -github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= -github.com/prometheus/common v0.38.0/go.mod h1:MBXfmBQZrK5XpbCkjofnXs96LD2QQ7fEq4C0xjC/yec= -github.com/prometheus/common v0.41.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= -github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= -github.com/prometheus/common/assets v0.1.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= -github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= -github.com/prometheus/common/sigv4 v0.1.0/go.mod h1:2Jkxxk9yYvCkE5G1sQT7GuEXm57JrvHu9k5YwTjsNtI= -github.com/prometheus/exporter-toolkit v0.7.1/go.mod h1:ZUBIj498ePooX9t/2xtDjeQYwvRpiPP2lh5u4iblj2g= -github.com/prometheus/exporter-toolkit v0.8.2/go.mod h1:00shzmJL7KxcsabLWcONwpyNEuWhREOnFqZW7vadFS0= -github.com/prometheus/exporter-toolkit v0.9.1/go.mod h1:iFlTmFISCix0vyuyBmm0UqOUCTao9+RsAsKJP3YM9ec= -github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.0-20190522114515-bc1a522cf7b1/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= -github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= -github.com/prometheus/prometheus v0.35.0/go.mod h1:7HaLx5kEPKJ0GDgbODG0fZgXbQ8K/XjZNJXQmbmgQlY= -github.com/prometheus/prometheus v0.44.0 h1:sgn8Fdx+uE5tHQn0/622swlk2XnIj6udoZCnbVjHIgc= -github.com/prometheus/prometheus v0.44.0/go.mod h1:aPsmIK3py5XammeTguyqTmuqzX/jeCdyOWWobLHNKQg= +github.com/prometheus/prometheus v0.45.0 h1:O/uG+Nw4kNxx/jDPxmjsSDd+9Ohql6E7ZSY1x5x/0KI= +github.com/prometheus/prometheus v0.45.0/go.mod h1:jC5hyO8ItJBnDWGecbEucMyXjzxGv9cxsxsjS9u5s1w= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rakyll/embedmd v0.0.0-20171029212350-c8060a0752a2/go.mod h1:7jOTMgqac46PZcF54q6l2hkLEG8op93fZu61KmxWDV4= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= -github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rhysd/actionlint v1.6.15 h1:IxQIp10aVce77jNnoHye7NFka8/7CRBSvKXoMRGryXM= github.com/rhysd/actionlint v1.6.15/go.mod h1:R4ZRjgsIrnsT1CPU/4MdiIBzfJgMKJFd4qqGUERI098= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= @@ -2106,51 +648,23 @@ github.com/robfig/cron v1.2.0 h1:ZjScXvvxeQ63Dbyxy76Fj3AT3Ut0aKsyd2/tl3DTMuQ= github.com/robfig/cron v1.2.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/rogpeppe/go-internal v1.10.1-0.20230524175051-ec119421bb97 h1:3RPlVWzZ/PDqmVuf/FKHARG5EMid/tl7cv54Sw/QRVY= -github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= -github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= -github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= github.com/rubiojr/go-vhd v0.0.0-20160810183302-0bfd3b39853c/go.mod h1:DM5xW0nvfNNm2uytzsvhI3OnX8uzaRAg8UX/CnDqbto= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= -github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= -github.com/safchain/ethtool v0.0.0-20210803160452-9aa261dae9b1/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= -github.com/sagikazarmark/crypt v0.6.0/go.mod h1:U8+INwJo3nBv1m6A/8OBXAq7Jnpspk5AxSgDyEQcea8= github.com/satori/go.uuid v1.2.1-0.20181016170032-d91630c85102/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.15/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= -github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= -github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/shoenig/test v0.6.3/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= -github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= -github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/githubv4 v0.0.0-20201206200315-234843c633fa h1:jozR3igKlnYCj9IVHOVump59bp07oIRoLQ/CcjMYIUA= github.com/shurcooL/githubv4 v0.0.0-20201206200315-234843c633fa/go.mod h1:hAF0iLZy4td2EX+/8Tw+4nodhlMrwN3HupfaXj3zkGo= github.com/shurcooL/graphql v0.0.0-20200928012149-18c5c3165e3a h1:KikTa6HtAK8cS1qjvUvvq4QO21QnwC+EfvB+OAuZ/ZU= github.com/shurcooL/graphql v0.0.0-20200928012149-18c5c3165e3a/go.mod h1:AuYgA5Kyo4c7HfUmvRGs/6rGlMMV/6B1bVnB9JxJEEg= -github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= -github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= -github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= @@ -2164,8 +678,6 @@ github.com/skeema/knownhosts v1.1.1/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2Iqp github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spdx/gordf v0.0.0-20201111095634-7098f93598fb/go.mod h1:uKWaldnbMnjsSAXRurWqqrdyZen1R7kxl8TkmWk2OyM= github.com/spdx/gordf v0.0.0-20221230105357-b735bd5aac89 h1:dArkMwZ7Mf2JiU8OfdmqIv8QaHT4oyifLIe1UhsF1SY= @@ -2174,44 +686,27 @@ github.com/spdx/tools-golang v0.5.2 h1:dtMNjJreWPe37584ajk7m/rQtfJaLpRMk7pUGgvek github.com/spdx/tools-golang v0.5.2/go.mod h1:/ETOahiAo96Ob0/RAIBmFZw6XN0yTnyr/uFZm2NTMhI= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= -github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= -github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= -github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.13.0/go.mod h1:Icm2xNL3/8uyh/wFuB1jI7TiTNKp8632Nwegu+zgdYw= -github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= -github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v1.0.0/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/handy v0.0.0-20200128134331-0f66f006fb2e/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= -github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -2219,282 +714,93 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.7.4/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= -github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= -github.com/tedsuo/ifrit v0.0.0-20180802180643-bea94bb476cc/go.mod h1:eyZnKCc955uh98WQvzOm0dgAeLnf2O0Rz0LPoC5ze+0= -github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= -github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8= github.com/vbatts/tar-split v0.11.3 h1:hLFqsOLQ1SsppQNTMpkpPXClLDfC2A3Zgy9OUU+RVck= github.com/vbatts/tar-split v0.11.3/go.mod h1:9QlHN18E+fEH7RdG+QAJJcuya3rqT7eXSTY7wGrAokY= github.com/vdemeester/k8s-pkg-credentialprovider v1.18.1-0.20201019120933-f1d16962a4db/go.mod h1:grWy0bkr1XO6hqbaaCKaPXqkBVlMGHYG6PGykktwbJc= -github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= -github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= -github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= -github.com/vishvananda/netlink v1.1.1-0.20210330154013-f5de75959ad5/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= -github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= -github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= -github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= -github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= github.com/vmware/govmomi v0.20.3/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= -github.com/vultr/govultr/v2 v2.17.2/go.mod h1:ZFOKGWmgjytfyjeyAdhQlSWwTjh2ig+X49cAp50dzXI= -github.com/willf/bitset v1.1.11-0.20200630133818-d5bec3311243/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= -github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= github.com/xanzy/go-gitlab v0.86.0 h1:jR8V9cK9jXRQDb46KOB20NCF3ksY09luaG0IfXE6p7w= github.com/xanzy/go-gitlab v0.86.0/go.mod h1:5ryv+MnpZStBH8I/77HuQBsMbBGANtVpLWC15qOjWAw= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= -github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= -github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= -github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= -github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= -github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xhit/go-str2duration v1.2.0/go.mod h1:3cPSlfZlUHVlneIVfePFWcJZsuwf+P1v2SRTV4cUmp4= -github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/treeprint v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= -github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= -github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= -go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= -go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= -go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= -go.etcd.io/etcd/client/v2 v2.305.4/go.mod h1:Ud+VUwIi9/uQHOMA+4ekToJ12lTxlv0zB/+DHwTGEbU= -go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= -go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY= -go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= -go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= -go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= -go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= -go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= -go.mongodb.org/mongo-driver v1.8.3/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY= -go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8= -go.mongodb.org/mongo-driver v1.11.0/go.mod h1:s7p5vEtfbeR1gYi6pnj3c3/urpbLv2T5Sfd6Rp2HBB8= -go.mongodb.org/mongo-driver v1.11.3/go.mod h1:PTSz5yu21bkT/wXpkS7WR5f0ddqw5quethTUn9WM+2g= -go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk= -go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.28.0/go.mod h1:vEhqr0m4eTc+DWxfsXoXue2GBgV2uUwVznkGIHW/e5w= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.31.0/go.mod h1:PFmBsWbldL1kiWZk9+0LBZz2brhByaGsvp6pRICMlPE= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.40.0/go.mod h1:pcQ3MM3SWvrA71U4GDqv9UFDJ3HQsW7y5ZO3tDTlUdI= -go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= -go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs= -go.opentelemetry.io/otel v1.6.0/go.mod h1:bfJD2DZVw0LBxghOTlgnlI0CV3hLDu9XF/QKOUXMTQQ= -go.opentelemetry.io/otel v1.6.1/go.mod h1:blzUabWHkX6LJewxvadmzafgh/wnvBSDBdOuwkAtrWQ= -go.opentelemetry.io/otel v1.11.1/go.mod h1:1nNhXBbWSD0nsL38H6btgnFN2k4i0sNLHNNMZMSbUGE= -go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU= -go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.3.0/go.mod h1:VpP4/RMn8bv8gNo9uK7/IMY4mtWLELsS+JIP0inH0h4= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.6.1/go.mod h1:NEu79Xo32iVb+0gVNV8PMd7GoWqnyDXRlj04yFjqz40= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0/go.mod h1:UFG7EBMRdXyFstOwH028U0sVf+AvukSGhF0g8+dmNG8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.3.0/go.mod h1:hO1KLR7jcKaDDKDkvI9dP/FIhpmna5lkqPUQdEjFAM8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.6.1/go.mod h1:YJ/JbY5ag/tSQFXzH3mtDmHqzF3aFn3DI/aB1n7pt4w= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0/go.mod h1:HrbCVv40OOLTABmOn1ZWty6CHXkU8DK/Urc43tHug70= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.3.0/go.mod h1:keUU7UfnwWTWpJ+FWnyqmogPa82nuU5VUANFq49hlMY= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.6.1/go.mod h1:UJJXJj0rltNIemDMwkOJyggsvyMG9QHfJeFH0HS5JjM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0/go.mod h1:5w41DY6S9gZrbjuq6Y+753e96WfPha5IcsOSZTtullM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.3.0/go.mod h1:QNX1aly8ehqqX1LEa6YniTU7VY9I6R3X/oPxhGdTceE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.6.1/go.mod h1:DAKwdo06hFLc0U88O10x4xnb5sc7dDRDqRuiN+io8JE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.14.0/go.mod h1:+N7zNjIJv4K+DeX67XXET0P+eIciESgaFDBqh+ZJFS4= -go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= -go.opentelemetry.io/otel/metric v0.28.0/go.mod h1:TrzsfQAmQaB1PDcdhBauLMk7nyyg9hm+GoQq/ekE9Iw= -go.opentelemetry.io/otel/metric v0.37.0/go.mod h1:DmdaHfGt54iV6UKxsV9slj2bBRJcKC1B1uvDLIioc1s= -go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= -go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= -go.opentelemetry.io/otel/sdk v1.3.0/go.mod h1:rIo4suHNhQwBIPg9axF8V9CA72Wz2mKF1teNrup8yzs= -go.opentelemetry.io/otel/sdk v1.6.1/go.mod h1:IVYrddmFZ+eJqu2k38qD3WezFR2pymCzm8tdxyh3R4E= -go.opentelemetry.io/otel/sdk v1.11.1/go.mod h1:/l3FE4SupHJ12TduVjUkZtlfFqDCQJlOlithYrdktys= -go.opentelemetry.io/otel/sdk v1.14.0/go.mod h1:bwIC5TjrNG6QDCHNWvW4HLHtUQ4I+VQDsnjhvyZCALM= -go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= -go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= -go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= -go.opentelemetry.io/otel/trace v1.3.0/go.mod h1:c/VDhno8888bvQYmbYLqe41/Ldmr/KKunbvWM4/fEjk= -go.opentelemetry.io/otel/trace v1.6.0/go.mod h1:qs7BrU5cZ8dXQHBGxHMOxwME/27YH2qEp4/+tZLLwJE= -go.opentelemetry.io/otel/trace v1.6.1/go.mod h1:RkFRM1m0puWIq10oxImnGEduNBzxiN7TXluRBtE+5j0= -go.opentelemetry.io/otel/trace v1.11.1/go.mod h1:f/Q9G7vzk5u91PhbmKbg1Qn0rzH1LJ4vbPHFGkTPtOk= -go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.11.0/go.mod h1:QpEjXPrNQzrFDZgoTo49dgHR9RYRSrg3NAKnUGl9YpQ= -go.opentelemetry.io/proto/otlp v0.12.1/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= -go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= -go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/automaxprocs v1.5.1/go.mod h1:BF4eumQw0P9GtnuxxovUd06vwm1o18oMzFtK66vU6XU= -go.uber.org/automaxprocs v1.5.2/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0= -go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= -go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= -go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= -go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= -gocloud.dev v0.30.0 h1:PRgA+DXUz8/uuTJDA7wc8o2Hwj9yZ2qAsShZ60esbE8= -gocloud.dev v0.30.0/go.mod h1:w+GlGVg/Jy9JV0Xc9eSXzUZeVEmSWW49W0syFK1+T9U= -golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +gocloud.dev v0.32.0 h1:jHf8WSkByuAuXcvFt04OiiQH+N0zaRtxI6iEph8Bq8Y= +gocloud.dev v0.32.0/go.mod h1:m/x/N9cRjDF5MD0i5TLFbKbqkGffl/qayXA9FcMT5Oc= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= -golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20210915214749-c084706c2272/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211202192323-5770296d904e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20221012134737-56aed061732a/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= -golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= -golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= -golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= -golang.org/x/exp v0.0.0-20230108222341-4b8118a2686a/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= -golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df h1:UA2aFVmmsIlefxMk29Dp2juaUSth8Pyn3Tq5Y5mJGME= golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= -golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -2505,8 +811,6 @@ golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= @@ -2515,25 +819,15 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= -golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2559,70 +853,22 @@ golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= -golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= -golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210614182718-04defd469f4e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220805013720-a33c5aa5df48/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20220921155015-db77216a4ee9/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= -golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= -golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -2630,42 +876,13 @@ golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210427180440-81ed05c6b58c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220722155238-128564f6959c/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= -golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= -golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= -golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= -golang.org/x/oauth2 v0.9.0/go.mod h1:qYgFZaFiu6Wg24azG8bdV52QJXJGbZzIIsRCdVKzbLw= golang.org/x/oauth2 v0.10.0 h1:zHCpF2Khkwy4mMB4bv0U37YtJdTGW8jI0glAApi0Kh8= golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -2673,13 +890,8 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220513210516-0976fa681c29/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -2690,175 +902,70 @@ golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190522044717-8097e1b27ff5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190812073006-9eafafc0a87e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191210023423-ac6580df4449/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200817155316-9781c653f443/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201117170446-d9b008d0a637/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201211090839-8ad439b19e0f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210503080704-8803ae5d1324/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210608053332-aa57babbf139/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210903071746-97244b99971b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220224120231-95c6836cb0e7/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220906165534-d0df966e6959/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220919091848-fb04ddd9f9c8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= -golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= -golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2867,18 +974,14 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2886,17 +989,9 @@ golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220224211638-0e9765cccd65/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -2907,31 +1002,20 @@ golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -2940,7 +1024,6 @@ golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -2948,71 +1031,27 @@ golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20200916195026-c9a70fc28ce3/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= -golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= -golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= -golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= golang.org/x/tools v0.11.0 h1:EMCa6U9S2LtZXLAMoWiR/R8dAQFRqbAitmbJ2UKhoi8= golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= golang.org/x/vuln v1.0.0 h1:tYLAU3jD9LQr98Y+3el06lWyGMCnvzw06PIWP3LIy7g= golang.org/x/vuln v1.0.0/go.mod h1:V0eyhHwaAaHrt42J9bgrN6rd12f6GU4T0Lu0ex2wDg4= -golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= -gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= -gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= gonum.org/v1/gonum v0.11.0 h1:f1IJhK4Km5tBJmaiJXtk/PkL4cdVX6J+tGiM187uT5E= -gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= -gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= -gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= -gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.6.1-0.20190607001116-5213b8090861/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1Q4= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= @@ -3023,66 +1062,9 @@ google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsb google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.46.0/go.mod h1:ceL4oozhkAiTID8XMmJBsIxID/9wMXJVVFXPg4ylg3I= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.58.0/go.mod h1:cAbP2FsxoGVNwtgNAmmn3y5G1TWAiVYRmg4yku3lv+E= -google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= -google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= -google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= -google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= -google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= -google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= -google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= -google.golang.org/api v0.81.0/go.mod h1:FA6Mb/bZxj706H2j+j2d6mHEEaHBmbbWnkfvmorOCko= -google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= -google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= -google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= -google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08= -google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= -google.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0= -google.golang.org/api v0.106.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= -google.golang.org/api v0.107.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= -google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= -google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= -google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= -google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= -google.golang.org/api v0.118.0/go.mod h1:76TtD3vkgmZ66zZzp72bUUklpmQmKlhh6sYtIjYK+5E= -google.golang.org/api v0.122.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= -google.golang.org/api v0.123.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= -google.golang.org/api v0.124.0/go.mod h1:xu2HQurE5gi/3t1aFCvhPD781p0a3p11sdunTJ2BlP4= -google.golang.org/api v0.125.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= -google.golang.org/api v0.126.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= -google.golang.org/api v0.128.0 h1:RjPESny5CnQRn9V6siglged+DZCgfu9l6mO9dkX9VOg= -google.golang.org/api v0.128.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= +google.golang.org/api v0.132.0 h1:8t2/+qZ26kAOGSmOiHwVycqVaDg7q3JDILrNi/Z6rvc= +google.golang.org/api v0.132.0/go.mod h1:AeTBC6GpJnJSRJjktDcPX0QwtS8pGYZOV6MSuSCusw0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -3096,7 +1078,6 @@ google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190522204451-c2c4e71fbf69/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= @@ -3105,204 +1086,40 @@ google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvx google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200117163144-32f20d992d24/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201203001206-6486ece9c497/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210429181445-86c259c2b4ab/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210517163617-5e0236093d7a/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210921142501-181ce0d877f6/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211018162055-cf77aa76bad2/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220329172620-7be39ac1afc7/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= -google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= -google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= -google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= -google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= -google.golang.org/genproto v0.0.0-20221109142239-94d6d90a7d66/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221117204609-8f9c96812029/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221201204527-e3fa12d562f3/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd/go.mod h1:cTsE614GARnxrLsqKREzmNYJACSWWpAWdNMwnD7c2BE= -google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230112194545-e10362b5ecf9/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230113154510-dbe35b8444a5/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230123190316-2c411cf9d197/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230124163310-31e0e69b6fc2/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230127162408-596548ed4efa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44/go.mod h1:8B0gmkoRebU8ukX6HP+4wrVQUY1+6PkQ44BSyIlflHA= -google.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= -google.golang.org/genproto v0.0.0-20230223222841-637eb2293923/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= -google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488/go.mod h1:TvhZT5f700eVlTNwND1xoEZQeWTB2RY/65kplwl/bFA= -google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= -google.golang.org/genproto v0.0.0-20230320184635-7606e756e683/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= -google.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= -google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= -google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= -google.golang.org/genproto v0.0.0-20230403163135-c38d8f061ccd/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= -google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= -google.golang.org/genproto v0.0.0-20230525234025-438c736192d0/go.mod h1:9ExIQyXL5hZrHzQceCwuSYwZZ5QZBazOcprJ5rgs3lY= -google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc h1:8DyZCyvI8mE1IdLy/60bS+52xfymkE72wv1asokgtao= -google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= -google.golang.org/genproto/googleapis/api v0.0.0-20230525234020-1aefcd67740a/go.mod h1:ts19tUU+Z0ZShN1y3aPyq2+O3d5FUNNgT6FtOzmrNn8= -google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc h1:kVKPf/IiYSBWEWtkIn6wZXwWGCnLKcC8oWfZvXjsGnM= -google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/bytestream v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:ylj+BE99M198VPbBh6A8d9n3w8fChvyLK3wwBOjXBFA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234015-3fc162c6f38a/go.mod h1:xURIpW9ES5+/GZhnV6beoEtxQrnkRGIfP5VQG2tCBLc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc h1:XSJ8Vk1SWuNr8S18z1NZSziL0CPIXLCCMDOEFtHBOFc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto v0.0.0-20230717213848-3f92550aa753 h1:+VoAg+OKmWaommL56xmZSE2sUK8A7m6SUO7X89F2tbw= +google.golang.org/genproto v0.0.0-20230717213848-3f92550aa753/go.mod h1:iqkVr8IRpZ53gx1dEnWlCUIEwDWqWARWrbzpasaTNYM= +google.golang.org/genproto/googleapis/api v0.0.0-20230717213848-3f92550aa753 h1:lCbbUxUDD+DiXx9Q6F/ttL0aAu7N2pz8XnmMm8ZW4NE= +google.golang.org/genproto/googleapis/api v0.0.0-20230717213848-3f92550aa753/go.mod h1:rsr7RhLuwsDKL7RmgDDCUc6yaGr1iqceVb5Wv6f6YvQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230717213848-3f92550aa753 h1:XUODHrpzJEUeWmVo/jfNTLj0YyVveOo28oE6vkFbkO4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230717213848-3f92550aa753/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww= -google.golang.org/grpc v1.52.0/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= -google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= -google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= -google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= -google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= -google.golang.org/grpc v1.56.0 h1:+y7Bs8rtMd07LeXmL3NxcTLn7mUkbKZqEpPhMNkwJEE= -google.golang.org/grpc v1.56.0/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/grpc v1.56.2 h1:fVRFRnXvU+x6C4IlHZewvJOVHoOv1TUuQyoRsYnB4bI= +google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -3317,12 +1134,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -3336,22 +1149,12 @@ gopkg.in/d4l3k/messagediff.v1 v1.2.1/go.mod h1:EUzikiKadqXWcD1AzJLagx0j/BeeWGtn+ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.0/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= -gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.66.6/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= -gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/telebot.v3 v3.0.0/go.mod h1:7rExV8/0mDDNu9epSrDm/8j22KLaActH1Tbee6YjzWg= -gopkg.in/telebot.v3 v3.1.2/go.mod h1:GJKwwWqp9nSkIVN51eRKU78aB5f5OnQuWdwiIZfPbko= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.1/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= @@ -3361,167 +1164,65 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= -gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= -gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= k8s.io/api v0.18.8/go.mod h1:d/CXqwWv+Z2XEG1LgceeDmHQwpUJhROPx16SlxJgERY= -k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= -k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= -k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= -k8s.io/api v0.22.5/go.mod h1:mEhXyLaSD1qTOf40rRiKXkc+2iCem09rWLlFwhCEiAs= -k8s.io/api v0.23.5/go.mod h1:Na4XuKng8PXJ2JsploYYrivXrINeTaycCGcYgF91Xm8= k8s.io/api v0.26.2 h1:dM3cinp3PGB6asOySalOZxEG4CZ0IAdJsrYZXE/ovGQ= k8s.io/api v0.26.2/go.mod h1:1kjMQsFE+QHPfskEcVNgL3+Hp88B80uj0QtSOlj8itU= k8s.io/apimachinery v0.18.8/go.mod h1:6sQd+iHEqmOtALqOFjSWp2KZ9F0wlU/nWm0ZgsYWMig= -k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= -k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= -k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= -k8s.io/apimachinery v0.22.1/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= -k8s.io/apimachinery v0.22.5/go.mod h1:xziclGKwuuJ2RM5/rSFQSYAj0zdbci3DH8kj+WvyN0U= -k8s.io/apimachinery v0.23.5/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM= k8s.io/apimachinery v0.26.2 h1:da1u3D5wfR5u2RpLhE/ZtZS2P7QvDgLZTi9wrNZl/tQ= k8s.io/apimachinery v0.26.2/go.mod h1:ats7nN1LExKHvJ9TmwootT00Yz05MuYqPXEXaVeOy5I= k8s.io/apiserver v0.18.8/go.mod h1:12u5FuGql8Cc497ORNj79rhPdiXQC4bf53X/skR/1YM= -k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= -k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= -k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= -k8s.io/apiserver v0.22.5/go.mod h1:s2WbtgZAkTKt679sYtSudEQrTGWUSQAPe6MupLnlmaQ= k8s.io/client-go v0.18.8/go.mod h1:HqFqMllQ5NnQJNwjro9k5zMyfhZlOwpuTLVrxjkYSxU= -k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= -k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= -k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= -k8s.io/client-go v0.22.5/go.mod h1:cs6yf/61q2T1SdQL5Rdcjg9J1ElXSwbjSrW2vFImM4Y= -k8s.io/client-go v0.23.5/go.mod h1:flkeinTO1CirYgzMPRWxUCnV0G4Fbu2vLhYCObnt/r4= k8s.io/client-go v0.26.2 h1:s1WkVujHX3kTp4Zn4yGNFK+dlDXy1bAAkIl+cFAiuYI= k8s.io/client-go v0.26.2/go.mod h1:u5EjOuSyBa09yqqyY7m3abZeovO/7D/WehVVlZ2qcqU= k8s.io/cloud-provider v0.18.8/go.mod h1:cn9AlzMPVIXA4HHLVbgGUigaQlZyHSZ7WAwDEFNrQSs= k8s.io/code-generator v0.17.2/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= -k8s.io/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= k8s.io/component-base v0.18.8/go.mod h1:00frPRDas29rx58pPCxNkhUfPbwajlyyvu8ruNgSErU= -k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= -k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI= -k8s.io/component-base v0.20.6/go.mod h1:6f1MPBAeI+mvuts3sIdtpjljHWBQ2cIy38oBIWMYnrM= -k8s.io/component-base v0.22.5/go.mod h1:VK3I+TjuF9eaa+Ln67dKxhGar5ynVbwnGrUiNF4MqCI= -k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM= -k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= -k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= -k8s.io/cri-api v0.20.6/go.mod h1:ew44AjNXwyn1s0U4xCKGodU7J1HzBeZ1MpGrpa5r8Yc= -k8s.io/cri-api v0.23.1/go.mod h1:REJE3PSU0h/LOV1APBrupxrEJqnoxZC8KWzkBUHwrK4= k8s.io/csi-translation-lib v0.18.8/go.mod h1:6cA6Btlzxy9s3QrS4BCZzQqclIWnTLr6Jx3H2ctAzY4= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= -k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= -k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= -k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/klog/v2 v2.40.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/klog/v2 v2.90.1 h1:m4bYOKall2MmOiRaR1J+We67Do7vm9KiQVlT96lnHUw= -k8s.io/klog/v2 v2.90.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= +k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E= k8s.io/kube-openapi v0.0.0-20200410163147-594e756bea31/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= -k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= -k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= -k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= -k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= -k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk= -k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4= -k8s.io/kube-openapi v0.0.0-20230303024457-afdc3dddf62d h1:VcFq5n7wCJB2FQMCIHfC+f+jNcGgNMar1uKd6rVlifU= -k8s.io/kube-openapi v0.0.0-20230303024457-afdc3dddf62d/go.mod h1:y5VtZWM9sHHc2ZodIH/6SHzXj+TPU5USoA8lcIeKEKY= -k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= +k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f h1:2kWPakN3i/k81b0gvD5C5FJ2kxm1WrQFanWchyKuqGg= +k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f/go.mod h1:byini6yhqGC14c3ebc/QwanvYwhuMWF6yz2F8uwW8eg= k8s.io/legacy-cloud-providers v0.18.8/go.mod h1:tgp4xYf6lvjrWnjQwTOPvWQE9IVqSBGPF4on0IyICQE= k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20221107191617-1a15be271d1d/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= k8s.io/utils v0.0.0-20230308161112-d77c459e9343 h1:m7tbIjXGcGIAtpmQr7/NAi7RsWoW3E7Zcm4jI1HicTc= k8s.io/utils v0.0.0-20230308161112-d77c459e9343/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= -lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= -modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= -modernc.org/cc/v3 v3.36.2/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= -modernc.org/cc/v3 v3.36.3/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= -modernc.org/ccgo/v3 v3.0.0-20220428102840-41399a37e894/go.mod h1:eI31LL8EwEBKPpNpA4bU1/i+sKOwOrQy8D87zWUcRZc= -modernc.org/ccgo/v3 v3.0.0-20220430103911-bc99d88307be/go.mod h1:bwdAnOoaIt8Ax9YdWGjxWsdkPcZyRPHqrOvJxaKAKGw= -modernc.org/ccgo/v3 v3.16.4/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= -modernc.org/ccgo/v3 v3.16.6/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= -modernc.org/ccgo/v3 v3.16.8/go.mod h1:zNjwkizS+fIFDrDjIAgBSCLkWbJuHF+ar3QRn+Z9aws= -modernc.org/ccgo/v3 v3.16.9/go.mod h1:zNMzC9A9xeNUepy6KuZBbugn3c0Mc9TeiJO4lgvkJDo= -modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= -modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= -modernc.org/libc v0.0.0-20220428101251-2d5f3daf273b/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= -modernc.org/libc v1.16.0/go.mod h1:N4LD6DBE9cf+Dzf9buBlzVJndKr/iJHG97vGLHYnb5A= -modernc.org/libc v1.16.1/go.mod h1:JjJE0eu4yeK7tab2n4S1w8tlWd9MxXLRzheaRnAKymU= -modernc.org/libc v1.16.17/go.mod h1:hYIV5VZczAmGZAnG15Vdngn5HSF5cSkbvfz2B7GRuVU= -modernc.org/libc v1.16.19/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= -modernc.org/libc v1.17.0/go.mod h1:XsgLldpP4aWlPlsjqKRdHPqCxCjISdHfM/yeWC5GyW0= -modernc.org/libc v1.17.1/go.mod h1:FZ23b+8LjxZs7XtFMbSzL/EhPxNbfZbErxEHc7cbD9s= modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= -modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= -modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= -modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= -modernc.org/memory v1.1.1/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= -modernc.org/memory v1.2.0/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= -modernc.org/memory v1.2.1/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= -modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= -modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= -modernc.org/sqlite v1.18.1/go.mod h1:6ho+Gow7oX5V+OiOQ6Tr4xeqbx13UZ6t+Fw9IRUG4d4= modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= -modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw= -modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= -modernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw= -modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= -modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= mvdan.cc/sh/v3 v3.7.0 h1:lSTjdP/1xsddtaKfGg7Myu7DnlHItd3/M2tomOcNNBg= mvdan.cc/sh/v3 v3.7.0/go.mod h1:K2gwkaesF/D7av7Kxl0HbF5kGOd2ArupNTX3X44+8l8= -nhooyr.io/websocket v1.8.7/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7/go.mod h1:PHgbrJT7lCHcxMU+mDHEm+nx46H4zuuHZkDP6icnhu0= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= -sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= sigs.k8s.io/release-utils v0.6.0 h1:wJDuzWJqPH4a5FAxAXE2aBvbB6UMIW7iYMhsKnIMQkA= @@ -3529,11 +1230,6 @@ sigs.k8s.io/release-utils v0.6.0/go.mod h1:kR1/DuYCJ4covppUasYNcA11OixC9O37B/E0e sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw= -sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= -sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= From 8a4b5f8c77e6e06ff69119732d1fa2cc6b88b152 Mon Sep 17 00:00:00 2001 From: Spencer Schrock Date: Thu, 20 Jul 2023 13:00:51 -0700 Subject: [PATCH 073/125] :seedling: Include attestor Dockerfile in CI and dependabot updates (#3285) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Spencer Schrock Signed-off-by: André Backman --- .github/dependabot.yml | 7 +++++++ .github/workflows/docker.yml | 28 ++++++++++++++++++++++++++++ attestor/Dockerfile | 2 +- 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 070dec2e781..9ae9ca191be 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -74,3 +74,10 @@ updates: rebase-strategy: disabled commit-message: prefix: ":seedling:" +- package-ecosystem: docker + directory: "/attestor" + schedule: + interval: weekly + rebase-strategy: disabled + commit-message: + prefix: ":seedling:" diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 9ae8533b3f7..4b447142c5d 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -259,3 +259,31 @@ jobs: cache: true - name: docker build run: make cron-github-server-docker + attestor: + name: attestor-docker + runs-on: ubuntu-latest + permissions: + contents: read + needs: + - docs_only_check + if: (needs.docs_only_check.outputs.docs_only != 'true') + steps: + - name: Harden Runner + uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1 + with: + egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs + - name: Install Protoc + uses: arduino/setup-protoc@149f6c87b92550901b26acd1632e11c3662e381f # v1.3.0 + with: + version: ${{ env.PROTOC_VERSION }} + repo-token: ${{ secrets.GITHUB_TOKEN }} + - name: Clone the code + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - name: Setup Go + uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 + with: + go-version-file: ${{ env.GO_VERSION_FILE }} + check-latest: true + cache: true + - name: docker build + run: make build-attestor-docker diff --git a/attestor/Dockerfile b/attestor/Dockerfile index ec4d6949b04..915ec7ce8a0 100644 --- a/attestor/Dockerfile +++ b/attestor/Dockerfile @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM golang@sha256:ea3d912d500b1ae0a691b2e53eb8a6345b579d42d7e6a64acca83d274b949740 AS base +FROM golang:1.19@sha256:6b3fa4b908676231b50acbbc00e84d8cee9c6ce072b1175c0ff352c57d8a612f AS base WORKDIR /src/scorecard COPY . ./ From 428a85e7345d151fdd804844117f0ac96307b2dc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Jul 2023 20:01:29 +0000 Subject: [PATCH 074/125] :seedling: Bump tj-actions/changed-files from 37.3.0 to 37.4.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 37.3.0 to 37.4.0. - [Release notes](https://github.com/tj-actions/changed-files/releases) - [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md) - [Commits](https://github.com/tj-actions/changed-files/compare/39283171cefdf491e0f0d6cf285b86b31eb6f3cd...de0eba32790fb9bf87471b32855a30fc8f9d5fc6) --- updated-dependencies: - dependency-name: tj-actions/changed-files dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: André Backman --- .github/workflows/docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 4b447142c5d..07e14dde6d3 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -42,7 +42,7 @@ jobs: fetch-depth: 2 # needed to diff changed files - id: files name: Get changed files - uses: tj-actions/changed-files@39283171cefdf491e0f0d6cf285b86b31eb6f3cd #v37.3.0 + uses: tj-actions/changed-files@de0eba32790fb9bf87471b32855a30fc8f9d5fc6 #v37.4.0 with: files_ignore: '**.md' - id: docs_only_check From 7b7f526b5fd1ec9f2bfb683ce52a351248550754 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Jul 2023 20:22:49 +0000 Subject: [PATCH 075/125] :seedling: Bump google-appengine/debian11 in /attestor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps google-appengine/debian11 from `fed7dd5` to `97dc4fb`. --- updated-dependencies: - dependency-name: google-appengine/debian11 dependency-type: direct:production ... Signed-off-by: dependabot[bot] Signed-off-by: André Backman --- attestor/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/attestor/Dockerfile b/attestor/Dockerfile index 915ec7ce8a0..728336bd9b3 100644 --- a/attestor/Dockerfile +++ b/attestor/Dockerfile @@ -21,7 +21,7 @@ ARG TARGETOS ARG TARGETARCH RUN make build-attestor -FROM gcr.io/google-appengine/debian11@sha256:fed7dd5b2c4bbfb70bd26a277cdaff98dced71f113632ccd5451dcc013fce0a4 +FROM gcr.io/google-appengine/debian11@sha256:97dc4fbf18419ef928bcddb865ccf0536d4cc39ae3ace5a2b4273c11aedbea82 COPY --from=build /src/scorecard/attestor / ENTRYPOINT [ "/scorecard-attestor" ] From b469dc64e7508b44d2e6023c637b33ad5cb8c5da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 20 Jul 2023 20:49:03 +0000 Subject: [PATCH 076/125] :seedling: Bump github.com/xanzy/go-gitlab from 0.86.0 to 0.88.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [github.com/xanzy/go-gitlab](https://github.com/xanzy/go-gitlab) from 0.86.0 to 0.88.0. - [Changelog](https://github.com/xanzy/go-gitlab/blob/master/releases_test.go) - [Commits](https://github.com/xanzy/go-gitlab/compare/v0.86.0...v0.88.0) --- updated-dependencies: - dependency-name: github.com/xanzy/go-gitlab dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: André Backman --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 969d91c3788..a752203563b 100644 --- a/go.mod +++ b/go.mod @@ -169,7 +169,7 @@ require ( github.com/sergi/go-diff v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/vbatts/tar-split v0.11.3 // indirect - github.com/xanzy/go-gitlab v0.86.0 + github.com/xanzy/go-gitlab v0.88.0 github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect diff --git a/go.sum b/go.sum index 9c3659fb434..1c7f445dd2b 100644 --- a/go.sum +++ b/go.sum @@ -729,8 +729,8 @@ github.com/vbatts/tar-split v0.11.3 h1:hLFqsOLQ1SsppQNTMpkpPXClLDfC2A3Zgy9OUU+RV github.com/vbatts/tar-split v0.11.3/go.mod h1:9QlHN18E+fEH7RdG+QAJJcuya3rqT7eXSTY7wGrAokY= github.com/vdemeester/k8s-pkg-credentialprovider v1.18.1-0.20201019120933-f1d16962a4db/go.mod h1:grWy0bkr1XO6hqbaaCKaPXqkBVlMGHYG6PGykktwbJc= github.com/vmware/govmomi v0.20.3/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= -github.com/xanzy/go-gitlab v0.86.0 h1:jR8V9cK9jXRQDb46KOB20NCF3ksY09luaG0IfXE6p7w= -github.com/xanzy/go-gitlab v0.86.0/go.mod h1:5ryv+MnpZStBH8I/77HuQBsMbBGANtVpLWC15qOjWAw= +github.com/xanzy/go-gitlab v0.88.0 h1:9GHBrxyCUNZZNuAsbJ1NbEH6XAYsKyTn6NfE0wYO5SY= +github.com/xanzy/go-gitlab v0.88.0/go.mod h1:5ryv+MnpZStBH8I/77HuQBsMbBGANtVpLWC15qOjWAw= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= From 000756ba6a4941af66e6a47bd5be0ec7cdcf3ea2 Mon Sep 17 00:00:00 2001 From: Spencer Schrock Date: Thu, 20 Jul 2023 19:03:18 -0700 Subject: [PATCH 077/125] :seedling: Use a matrix for docker image building (#3290) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * working matrix. Signed-off-by: Spencer Schrock * Remove unneeded env vars. Add comments. Signed-off-by: Spencer Schrock * minor syntax change. Signed-off-by: Spencer Schrock --------- Signed-off-by: Spencer Schrock Signed-off-by: André Backman --- .github/workflows/docker.yml | 240 +++-------------------------------- 1 file changed, 17 insertions(+), 223 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 07e14dde6d3..db2f2d307ef 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -23,9 +23,7 @@ on: - main env: - PROTOC_VERSION: 3.17.3 GO_VERSION_FILE: go.mod # no good way of getting a mutual version between go.mod and tools/go.mod - CACHE_DEPENDENCY_PATH: "**/go.sum" # include both go.sum and tools/go.sum jobs: docs_only_check: @@ -50,240 +48,36 @@ jobs: name: Check for docs-only changes run: echo "docs_only=true" >> $GITHUB_OUTPUT - scorecard: - name: scorecard-docker + docker_matrix: + strategy: + matrix: + target: + - 'scorecard-docker' + - 'cron-controller-docker' + - 'cron-worker-docker' + - 'cron-cii-worker-docker' + - 'cron-bq-transfer-docker' + - 'cron-webhook-docker' + - 'cron-github-server-docker' + - 'build-attestor-docker' + name: ${{ matrix.target }} runs-on: ubuntu-latest permissions: contents: read - needs: - - docs_only_check + needs: docs_only_check if: (needs.docs_only_check.outputs.docs_only != 'true') steps: - name: Harden Runner uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - name: Install Protoc - uses: arduino/setup-protoc@149f6c87b92550901b26acd1632e11c3662e381f # v1.3.0 - with: - version: ${{ env.PROTOC_VERSION }} - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Clone the code - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 - with: - go-version-file: ${{ env.GO_VERSION_FILE }} - check-latest: true - cache: true - cache-dependency-path: ${{ env.CACHE_DEPENDENCY_PATH }} - - name: docker build - run: make scorecard-docker - cron-controller: - name: cron-controller-docker - runs-on: ubuntu-latest - permissions: - contents: read - needs: - - docs_only_check - if: (needs.docs_only_check.outputs.docs_only != 'true') - steps: - - name: Harden Runner - uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - name: Install Protoc - uses: arduino/setup-protoc@149f6c87b92550901b26acd1632e11c3662e381f # v1.3.0 - with: - version: ${{ env.PROTOC_VERSION }} - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Clone the code - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 - with: - go-version-file: ${{ env.GO_VERSION_FILE }} - check-latest: true - cache: true - cache-dependency-path: ${{ env.CACHE_DEPENDENCY_PATH }} - - name: docker build - run: make cron-controller-docker - cron-worker: - name: cron-worker-docker - runs-on: ubuntu-latest - permissions: - contents: read - needs: - - docs_only_check - if: (needs.docs_only_check.outputs.docs_only != 'true') - steps: - - name: Harden Runner - uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - name: Install Protoc - uses: arduino/setup-protoc@149f6c87b92550901b26acd1632e11c3662e381f # v1.3.0 - with: - version: ${{ env.PROTOC_VERSION }} - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Clone the code - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 - with: - go-version-file: ${{ env.GO_VERSION_FILE }} - check-latest: true - cache: true - cache-dependency-path: ${{ env.CACHE_DEPENDENCY_PATH }} - - name: docker build - run: make cron-worker-docker - cron-cii-worker: - name: cron-cii--worker-docker - runs-on: ubuntu-latest - permissions: - contents: read - needs: - - docs_only_check - if: (needs.docs_only_check.outputs.docs_only != 'true') - steps: - - name: Harden Runner - uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - name: Install Protoc - uses: arduino/setup-protoc@149f6c87b92550901b26acd1632e11c3662e381f # v1.3.0 - with: - version: ${{ env.PROTOC_VERSION }} - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Clone the code - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 - with: - go-version-file: ${{ env.GO_VERSION_FILE }} - check-latest: true - cache: true - cache-dependency-path: ${{ env.CACHE_DEPENDENCY_PATH }} - - name: docker build - run: make cron-cii-worker-docker - cron-bq-transfer: - name: cron-bq-transfer-docker - runs-on: ubuntu-latest - permissions: - contents: read - needs: - - docs_only_check - if: (needs.docs_only_check.outputs.docs_only != 'true') - steps: - - name: Harden Runner - uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - name: Install Protoc - uses: arduino/setup-protoc@149f6c87b92550901b26acd1632e11c3662e381f # v1.3.0 - with: - version: ${{ env.PROTOC_VERSION }} - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Clone the code - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 - with: - go-version-file: ${{ env.GO_VERSION_FILE }} - check-latest: true - cache: true - cache-dependency-path: ${{ env.CACHE_DEPENDENCY_PATH }} - - name: docker build - run: make cron-bq-transfer-docker - cron-webhook: - name: cron-webhook-docker - runs-on: ubuntu-latest - permissions: - contents: read - needs: - - docs_only_check - if: (needs.docs_only_check.outputs.docs_only != 'true') - steps: - - name: Harden Runner - uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - name: Install Protoc - uses: arduino/setup-protoc@149f6c87b92550901b26acd1632e11c3662e381f # v1.3.0 - with: - version: ${{ env.PROTOC_VERSION }} - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Clone the code - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 - with: - go-version-file: ${{ env.GO_VERSION_FILE }} - check-latest: true - cache: true - cache-dependency-path: ${{ env.CACHE_DEPENDENCY_PATH }} - - name: docker build - run: make cron-webhook-docker - cron-github-server: - name: cron-github-server-docker - runs-on: ubuntu-latest - permissions: - contents: read - needs: - - docs_only_check - if: (needs.docs_only_check.outputs.docs_only != 'true') - steps: - - name: Harden Runner - uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - name: Install Protoc - uses: arduino/setup-protoc@149f6c87b92550901b26acd1632e11c3662e381f # v1.3.0 - with: - version: ${{ env.PROTOC_VERSION }} - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Clone the code - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 - with: - go-version-file: ${{ env.GO_VERSION_FILE }} - check-latest: true - cache: true - - name: docker build - run: make cron-github-server-docker - attestor: - name: attestor-docker - runs-on: ubuntu-latest - permissions: - contents: read - needs: - - docs_only_check - if: (needs.docs_only_check.outputs.docs_only != 'true') - steps: - - name: Harden Runner - uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - name: Install Protoc - uses: arduino/setup-protoc@149f6c87b92550901b26acd1632e11c3662e381f # v1.3.0 - with: - version: ${{ env.PROTOC_VERSION }} - repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Clone the code uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - - name: Setup Go + - name: Setup Go # needed for some of the Makefile evaluations, even if building happens in Docker uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 with: go-version-file: ${{ env.GO_VERSION_FILE }} check-latest: true - cache: true + cache: false # the building happens in Docker, so saving this cache would negatively impact other builds - name: docker build - run: make build-attestor-docker + run: make ${{ matrix.target }} From 9a01eaad58651b8fca97301297170d4da61c98d3 Mon Sep 17 00:00:00 2001 From: Naveen <172697+naveensrinivasan@users.noreply.github.com> Date: Thu, 20 Jul 2023 21:29:03 -0500 Subject: [PATCH 078/125] :seedling: Improve e2e workflow tests (#3282) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Ensure that only head queries are supported in workflow tests - Add a test to detect when a non-existent workflow file is used [e2e/workflow_test.go] - Add a test to check that only head queries are supported - Add a test to check that a non-existent workflow file returns an error Signed-off-by: naveensrinivasan <172697+naveensrinivasan@users.noreply.github.com> Signed-off-by: André Backman --- e2e/workflow_test.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/e2e/workflow_test.go b/e2e/workflow_test.go index b7b37653cff..fe9eb136c7a 100644 --- a/e2e/workflow_test.go +++ b/e2e/workflow_test.go @@ -38,5 +38,29 @@ var _ = Describe("E2E TEST:WorkflowRun", func() { Expect(err).Should(BeNil()) Expect(len(runs)).Should(BeNumerically(">", 0)) }) + It("Should should fail because only head queries are supported", func() { + // using the scorecard repo as an example. The tests repo workflow won't have any runs in the future and + // that is why we are using the scorecard repo. + repo, err := githubrepo.MakeGithubRepo("ossf/scorecard") + Expect(err).Should(BeNil()) + repoClient := githubrepo.CreateGithubRepoClient(context.Background(), logger) + err = repoClient.InitRepo(repo, "123456789", 0) + Expect(err).Should(BeNil()) + runs, err := repoClient.ListSuccessfulWorkflowRuns("scorecard-analysis.yml") + Expect(err).ShouldNot(BeNil()) + Expect(len(runs)).Should(BeNumerically("==", 0)) + }) + It("Should should fail the workflow file doesn't exist", func() { + // using the scorecard repo as an example. The tests repo workflow won't have any runs in the future and + // that is why we are using the scorecard repo. + repo, err := githubrepo.MakeGithubRepo("ossf/scorecard") + Expect(err).Should(BeNil()) + repoClient := githubrepo.CreateGithubRepoClient(context.Background(), logger) + err = repoClient.InitRepo(repo, clients.HeadSHA, 0) + Expect(err).Should(BeNil()) + runs, err := repoClient.ListSuccessfulWorkflowRuns("non-existing.yml") + Expect(err).ShouldNot(BeNil()) + Expect(len(runs)).Should(BeNumerically("==", 0)) + }) }) }) From 12b1ab2964970f9f8fa1268192b4cd0b3e40b171 Mon Sep 17 00:00:00 2001 From: Spencer Schrock Date: Fri, 21 Jul 2023 09:32:54 -0700 Subject: [PATCH 079/125] :seedling: Use a matrix for when building binaries in main.yml (#3291) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Use matrix for build jobs. Signed-off-by: Spencer Schrock * These build targets dont seem to need protoc. This lets us save the API quota. Signed-off-by: Spencer Schrock --------- Signed-off-by: Spencer Schrock Signed-off-by: André Backman --- .github/workflows/main.yml | 467 ++----------------------------------- 1 file changed, 20 insertions(+), 447 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index bfbb85e2630..16457560133 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -216,23 +216,30 @@ jobs: command: | go env -w GOFLAGS=-mod=mod make build-proto - build-scorecard: - name: build-scorecard + build-matrix: + strategy: + matrix: + target: + - 'build-scorecard' + - 'build-controller' + - 'build-worker' + - 'build-cii-worker' + - 'build-shuffler' + - 'build-bq-transfer' + - 'build-github-server' + - 'build-webhook' + - 'build-add-script' + - 'build-validate-script' + name: ${{ matrix.target }} runs-on: ubuntu-latest needs: build-proto permissions: contents: read steps: - name: Harden Runner - uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v1 + uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - name: Install Protoc - uses: arduino/setup-protoc@149f6c87b92550901b26acd1632e11c3662e381f # v1.3.0 - with: - version: ${{ env.PROTOC_VERSION }} - repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Cache builds # https://github.com/mvdan/github-actions-golang#how-do-i-set-up-caching-between-builds uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 @@ -246,456 +253,22 @@ jobs: restore-keys: | ${{ runner.os }}-go- - name: Clone the code - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v2.3.4 - with: - fetch-depth: 0 + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v2.2.0 + uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 with: go-version: ${{ env.GO_VERSION }} check-latest: true cache: true - name: Run build - uses: nick-invision/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd - with: - max_attempts: 3 - retry_on: error - timeout_minutes: 30 - command: | - go env -w GOFLAGS=-mod=mod - make build-scorecard - build-controller: - name: build-controller - runs-on: ubuntu-latest - needs: build-proto - permissions: - contents: read - steps: - - name: Harden Runner - uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v1 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - name: Install Protoc - uses: arduino/setup-protoc@149f6c87b92550901b26acd1632e11c3662e381f # v1.3.0 - with: - version: ${{ env.PROTOC_VERSION }} - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Cache builds - # https://github.com/mvdan/github-actions-golang#how-do-i-set-up-caching-between-builds - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 - with: - path: | - ~/go/pkg/mod - ~/.cache/go-build - ~/Library/Caches/go-build - %LocalAppData%\go-build - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - name: Clone the code - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v2.3.4 - with: - fetch-depth: 0 - - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v2.2.0 - with: - go-version: ${{ env.GO_VERSION }} - check-latest: true - cache: true - - name: build cron - uses: nick-invision/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd - with: - max_attempts: 3 - retry_on: error - timeout_minutes: 30 - command: | - go env -w GOFLAGS=-mod=mod - make build-controller - build-worker: - name: build-worker - runs-on: ubuntu-latest - needs: build-proto - permissions: - contents: read - steps: - - name: Harden Runner - uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v1 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - name: Install Protoc - uses: arduino/setup-protoc@149f6c87b92550901b26acd1632e11c3662e381f # v1.3.0 - with: - version: ${{ env.PROTOC_VERSION }} - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Cache builds - # https://github.com/mvdan/github-actions-golang#how-do-i-set-up-caching-between-builds - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 - with: - path: | - ~/go/pkg/mod - ~/.cache/go-build - ~/Library/Caches/go-build - %LocalAppData%\go-build - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - name: Clone the code - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v2.3.4 - with: - fetch-depth: 0 - - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v2.2.0 - with: - go-version: ${{ env.GO_VERSION }} - check-latest: true - cache: true - - name: build worker - uses: nick-invision/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd - with: - max_attempts: 3 - retry_on: error - timeout_minutes: 30 - command: | - go env -w GOFLAGS=-mod=mod - make build-worker - build-cii-worker: - name: build-cii-worker - runs-on: ubuntu-latest - needs: build-proto - permissions: - contents: read - steps: - - name: Harden Runner - uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v1 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - name: Install Protoc - uses: arduino/setup-protoc@149f6c87b92550901b26acd1632e11c3662e381f # v1.3.0 - with: - version: ${{ env.PROTOC_VERSION }} - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Cache builds - # https://github.com/mvdan/github-actions-golang#how-do-i-set-up-caching-between-builds - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 - with: - path: | - ~/go/pkg/mod - ~/.cache/go-build - ~/Library/Caches/go-build - %LocalAppData%\go-build - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - name: Clone the code - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v2.3.4 - with: - fetch-depth: 0 - - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v2.2.0 - with: - go-version: ${{ env.GO_VERSION }} - check-latest: true - cache: true - - name: build cii-worker - uses: nick-invision/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd - with: - max_attempts: 3 - retry_on: error - timeout_minutes: 30 - command: | - go env -w GOFLAGS=-mod=mod - make build-cii-worker - build-shuffler: - name: build-shuffler - runs-on: ubuntu-latest - needs: build-proto - permissions: - contents: read - steps: - - name: Harden Runner - uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v1 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - name: Install Protoc - uses: arduino/setup-protoc@149f6c87b92550901b26acd1632e11c3662e381f # v1.3.0 - with: - version: ${{ env.PROTOC_VERSION }} - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Cache builds - # https://github.com/mvdan/github-actions-golang#how-do-i-set-up-caching-between-builds - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 - with: - path: | - ~/go/pkg/mod - ~/.cache/go-build - ~/Library/Caches/go-build - %LocalAppData%\go-build - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - name: Clone the code - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v2.3.4 - with: - fetch-depth: 0 - - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v2.2.0 - with: - go-version: ${{ env.GO_VERSION }} - check-latest: true - cache: true - - name: build shuffler - uses: nick-invision/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd - with: - max_attempts: 3 - retry_on: error - timeout_minutes: 30 - command: | - go env -w GOFLAGS=-mod=mod - make build-shuffler - build-bq-transfer: - name: build-bq-transfer - runs-on: ubuntu-latest - needs: build-proto - permissions: - contents: read - steps: - - name: Harden Runner - uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v1 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - name: Install Protoc - uses: arduino/setup-protoc@149f6c87b92550901b26acd1632e11c3662e381f # v1.3.0 - with: - version: ${{ env.PROTOC_VERSION }} - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Cache builds - # https://github.com/mvdan/github-actions-golang#how-do-i-set-up-caching-between-builds - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 - with: - path: | - ~/go/pkg/mod - ~/.cache/go-build - ~/Library/Caches/go-build - %LocalAppData%\go-build - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - name: Clone the code - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v2.3.4 - with: - fetch-depth: 0 - - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v2.2.0 - with: - go-version: ${{ env.GO_VERSION }} - check-latest: true - cache: true - - name: build bq transfer - uses: nick-invision/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd - with: - max_attempts: 3 - retry_on: error - timeout_minutes: 30 - command: | - go env -w GOFLAGS=-mod=mod - make build-bq-transfer - build-github-server: - name: build-github-server - runs-on: ubuntu-latest - needs: build-proto - permissions: - contents: read - steps: - - name: Harden Runner - uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v1 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - name: Install Protoc - uses: arduino/setup-protoc@149f6c87b92550901b26acd1632e11c3662e381f # v1.3.0 - with: - version: ${{ env.PROTOC_VERSION }} - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Cache builds - # https://github.com/mvdan/github-actions-golang#how-do-i-set-up-caching-between-builds - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 - with: - path: | - ~/go/pkg/mod - ~/.cache/go-build - ~/Library/Caches/go-build - %LocalAppData%\go-build - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - name: Clone the code - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v2.3.4 - with: - fetch-depth: 0 - - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v2.2.0 - with: - go-version: ${{ env.GO_VERSION }} - check-latest: true - cache: true - - name: build bq transfer - uses: nick-invision/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd - with: - max_attempts: 3 - retry_on: error - timeout_minutes: 30 - command: | - go env -w GOFLAGS=-mod=mod - make build-github-server - build-webhook: - name: build-webhook - runs-on: ubuntu-latest - needs: build-proto - permissions: - contents: read - steps: - - name: Harden Runner - uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v1 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - name: Install Protoc - uses: arduino/setup-protoc@149f6c87b92550901b26acd1632e11c3662e381f # v1.3.0 - with: - version: ${{ env.PROTOC_VERSION }} - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Cache builds - # https://github.com/mvdan/github-actions-golang#how-do-i-set-up-caching-between-builds - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 - with: - path: | - ~/go/pkg/mod - ~/.cache/go-build - ~/Library/Caches/go-build - %LocalAppData%\go-build - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - name: Clone the code - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v2.3.4 - with: - fetch-depth: 0 - - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v2.2.0 - with: - go-version: ${{ env.GO_VERSION }} - check-latest: true - cache: true - - name: build webhook - uses: nick-invision/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd - with: - max_attempts: 3 - retry_on: error - timeout_minutes: 30 - command: | - go env -w GOFLAGS=-mod=mod - make build-webhook - build-add-script: - name: build-add-script - runs-on: ubuntu-latest - needs: build-proto - permissions: - contents: read - steps: - - name: Harden Runner - uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v1 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - name: Install Protoc - uses: arduino/setup-protoc@149f6c87b92550901b26acd1632e11c3662e381f # v1.3.0 - with: - version: ${{ env.PROTOC_VERSION }} - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Cache builds - # https://github.com/mvdan/github-actions-golang#how-do-i-set-up-caching-between-builds - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 - with: - path: | - ~/go/pkg/mod - ~/.cache/go-build - ~/Library/Caches/go-build - %LocalAppData%\go-build - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - name: Clone the code - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v2.3.4 - with: - fetch-depth: 0 - - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v2.2.0 - with: - go-version: ${{ env.GO_VERSION }} - check-latest: true - cache: true - - name: build-add-script - uses: nick-invision/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd - with: - max_attempts: 3 - retry_on: error - timeout_minutes: 30 - command: | - go env -w GOFLAGS=-mod=mod - make build-add-script - build-validate-script: - name: build-validate-script - runs-on: ubuntu-latest - needs: build-proto - permissions: - contents: read - steps: - - name: Harden Runner - uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v1 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - name: Install Protoc - uses: arduino/setup-protoc@149f6c87b92550901b26acd1632e11c3662e381f # v1.3.0 - with: - version: ${{ env.PROTOC_VERSION }} - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Cache builds - # https://github.com/mvdan/github-actions-golang#how-do-i-set-up-caching-between-builds - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 - with: - path: | - ~/go/pkg/mod - ~/.cache/go-build - ~/Library/Caches/go-build - %LocalAppData%\go-build - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - name: Clone the code - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v2.3.4 - with: - fetch-depth: 0 - - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v2.2.0 - with: - go-version: ${{ env.GO_VERSION }} - check-latest: true - cache: true - - name: build-validate-script - uses: nick-invision/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd + uses: nick-invision/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd # v2.8.3 with: max_attempts: 3 retry_on: error timeout_minutes: 30 command: | go env -w GOFLAGS=-mod=mod - make build-validate-script + make ${{ matrix.target }} validate-docs: name: validate-docs runs-on: ubuntu-latest From 8a2606c00c151fa321bef4a54151c59f348868db Mon Sep 17 00:00:00 2001 From: Spencer Schrock Date: Fri, 21 Jul 2023 10:20:51 -0700 Subject: [PATCH 080/125] :seedling: Fix hanging docker jobs for doc only changes. (#3292) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Spencer Schrock Signed-off-by: André Backman --- .github/workflows/docker.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index db2f2d307ef..006b11fcae9 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -65,19 +65,24 @@ jobs: permissions: contents: read needs: docs_only_check - if: (needs.docs_only_check.outputs.docs_only != 'true') + # ideally we put one "if" here, but due to how skipped matrix jobs work, we need one for each each step + # https://github.com/orgs/community/discussions/9141 steps: - name: Harden Runner + if: (needs.docs_only_check.outputs.docs_only != 'true') uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - name: Clone the code + if: (needs.docs_only_check.outputs.docs_only != 'true') uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - name: Setup Go # needed for some of the Makefile evaluations, even if building happens in Docker + if: (needs.docs_only_check.outputs.docs_only != 'true') uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 with: go-version-file: ${{ env.GO_VERSION_FILE }} check-latest: true cache: false # the building happens in Docker, so saving this cache would negatively impact other builds - name: docker build + if: (needs.docs_only_check.outputs.docs_only != 'true') run: make ${{ matrix.target }} From 4c6eb93c3914a3e888868c6572106a42e66ea2b8 Mon Sep 17 00:00:00 2001 From: Pedro Nacht Date: Fri, 21 Jul 2023 14:36:30 -0300 Subject: [PATCH 081/125] =?UTF-8?q?=F0=9F=93=96=20Add=20contributor=20ladd?= =?UTF-8?q?er=20(#3246)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add contributor ladder Signed-off-by: Pedro Kaj Kjellerup Nacht * Clarify sponsorship Signed-off-by: Pedro Kaj Kjellerup Nacht * Hope for retirement warning Signed-off-by: Pedro Kaj Kjellerup Nacht * 1 maintainer can sponsor a community member Signed-off-by: Pedro Kaj Kjellerup Nacht * Apply suggestions from code review Co-authored-by: Raghav Kaul <8695110+raghavkaul@users.noreply.github.com> Signed-off-by: Pedro Nacht --------- Signed-off-by: Pedro Kaj Kjellerup Nacht Signed-off-by: Pedro Nacht Signed-off-by: André Backman --- CONTRIBUTOR_LADDER.md | 180 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 CONTRIBUTOR_LADDER.md diff --git a/CONTRIBUTOR_LADDER.md b/CONTRIBUTOR_LADDER.md new file mode 100644 index 00000000000..e0b3c6762a1 --- /dev/null +++ b/CONTRIBUTOR_LADDER.md @@ -0,0 +1,180 @@ +# OpenSSF Scorecard Contributor ladder + +This document outlines the various contributor roles in the Scorecard project, along with their respective prerequisites and responsibilities. +It also defines the process by which users can request to change roles. + +- [Roles](#roles) + - [Community participants](#community-participants) + - [Community members](#community-members) + - [Triagers](#triagers) + - [Maintainers](#maintainers) +- [Inactive members](#inactive-members) + +## Roles + +### Community participants + +Community participants engage with Scorecard, +contributing their time and energy in discussions or just generally helping out. + +#### Pre-requisites + +- Must follow the [OpenSSF Code of Conduct] +- Must follow the [Contribution Guide] + +#### Responsibilities + +- Keep it up! + +### Community Members + +Community Members are active contributors in the community. +They can have issues and PRs assigned to them, participate through GitHub teams, +and pre-submit tests are automatically run for their PRs. +Members are expected to remain active contributors to the community. + +**Defined by:** Member of the OpenSSF GitHub organization + +#### Pre-requisites + +- Enabled two-factor authentication on their GitHub account +- Have made multiple contributions to the project or community. + Contributions may include, but are not limited to: + - Authoring or reviewing PRs on GitHub. At least one PR must be **merged**. + - Filing or commenting on issues on GitHub + - Contributing to a project, or community discussions (e.g. meetings, Slack, + email discussion forums, Stack Overflow) +- Active contributor to Scorecard or a relevant OpenSSF SIG + +#### Responsibilities + +- Can be assigned issues and PRs +- Responsive to issues and PRs assigned to them +- Others can ask for reviews with a `/cc @username`. +- Responsive to mentions of teams they are members of +- Active owner of code they have contributed (unless ownership is explicitly transferred) + - Ensures code is well tested and that tests consistently pass + - Addresses bugs or issues discovered after code is accepted + +#### Privileges + +- Tests run against their PRs automatically + +#### Promotion process + +- Sponsored by 1 maintainer or 2 triagers. **Note the following requirements for sponsors**: + - Sponsors must have close interactions with the prospective Member – e.g. + code/design/proposal review, coordinating on issues, etc. + - Sponsors must be reviewers or approvers in at least one CODEOWNERS file. + - Sponsors should preferably be from multiple OpenSSF member companies to incentivize community integration. +- Open an issue in the project's repository + - Ensure your sponsors are `@mentioned` + - Describe and/or link to all your relevant contributions to the project + (or other OpenSSF projects) + - Sponsoring reviewers must comment on the issue/PR confirming their sponsorship + +### Triagers + +Triagers help a project by reviewing issues and code for quality and correctness. +They are knowledgeable about the project's codebase (in its entirety or a specific section) +and software engineering principles. + +**Defined by:** "triage" permission in the project + +#### Pre-requisites + +- Community Member for at least 3 months +- Helped to triage issues and pull requests +- Knowledgeable about the codebase + +#### Responsibilities + +- Read through issues and PRs + - Answer questions when possible + - Add relevant labels + - Draw maintainers' attention (via `@mention`) if relevant + - Close issue (as "completed" or "not planned") if necessary +- Help maintain project quality control via [code reviews] on PRs + - Focus on code quality and correctness, including testing and factoring + - May also review for more holistic issues, but not a requirement +- Be responsive to review requests +- May be assigned PRs to review if in area of expertise +- Assigned test bugs related to the project of expertise + +#### Privileges + +- Same as for Community Members +- Triager status may be a precondition to accepting large code contributions + +#### Promotion process + +- Sponsored by a maintainer + - With no objections from other maintainers + - Done through issue or PR to update the CODEOWNERS file +- May self-nominate or be nominated by a maintainer + - In case of self-nomination, sponsor must comment approval on the issue/PR + +### Maintainers + +Maintainers are responsible for the project's overall health. +They are the only ones who can approve and merge code contributions. +While triage and code review is focused on code quality and correctness, +approval is focused on holistic acceptance of a contribution including: + +- backwards/forwards compatibility +- adherence to API and style conventions +- subtle performance and correctness issues +- interactions with other parts of the system +- consistency between code and documentation + +**Defined by:** "Maintain" permissions in the project and an entry in its CODEOWNERS file + +#### Pre-requisites + +- Triager for at least 3 months +- Reviewed at least 10 substantial PRs to the codebase +- Reviewed or got at least 30 PRs merged to the codebase + +#### Responsibilities + +- Demonstrate sound technical judgment +- Maintain project quality control via code reviews + - Focus on holistic acceptance of contribution +- Be responsive to review requests +- Mentor contributors and triagers +- Approve and merge code contributions as appropriate +- Participate in OpenSSF or Scorecard-specific community meetings, if possible +- Facilitating Scorecard-specific community meetings, if possible and comfortable + +#### Privileges + +- Same as for Triager +- Maintainer status may be a precondition to accepting especially large code contributions + +#### Promotion process +- Sponsored by a maintainer + - With no objections from other maintainers + - Done through PR to update the CODEOWNERS file +- May self-nominate or be nominated by a maintainer + - In case of self-nomination, sponsor must comment approval on the PR + +## Inactive members +A core principle in maintaining a healthy community is encouraging active participation. +It is inevitable that a contributor's focus will change over time +and there is no expectation they'll actively contribute forever. + +Any contributor at any level described above may write an issue (or PR, if CODEOWNER changes are necessary) +asking to step down to a lighter-weight tier or to depart the project entirely. +Such requests will hopefully come after thoughtful conversations with the rest of the team +and with sufficient forewarning for the others to prepare. However, sometimes "life happens". +Therefore, the change in responsibilities will be understood to take immediate effect, +regardless of whether the issue/PR has been acknowledged or merged. + +However, should a Triager or above be deemed inactive for a significant period, any +Community Member or above may write an issue/PR requesting their removal from the ranks +(and `@mentioning` the inactive contributor in the hopes of drawing their attention). +The request must receive support (in comments) from a majority of Maintainers to proceed. + + +[OpenSSF Code of Conduct]: https://openssf.org/community/code-of-conduct/ +[Contribution Guide]: ./CONTRIBUTING.md From d4f7a7eae8723e360886f43d2ba0c27b767e090b Mon Sep 17 00:00:00 2001 From: Spencer Schrock Date: Fri, 21 Jul 2023 11:13:33 -0700 Subject: [PATCH 082/125] :seedling: Consolidate GitLab e2e workflows. (#3278) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Move gitlab to different workflow to parallelize. Signed-off-by: Spencer Schrock * Add missing versions. Signed-off-by: Spencer Schrock --------- Signed-off-by: Spencer Schrock Signed-off-by: André Backman --- .github/workflows/gitlab.yml | 30 +++++++++++++++++++++--------- .github/workflows/integration.yml | 14 -------------- 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/.github/workflows/gitlab.yml b/.github/workflows/gitlab.yml index 3ee314caacb..964c47f2834 100644 --- a/.github/workflows/gitlab.yml +++ b/.github/workflows/gitlab.yml @@ -20,6 +20,9 @@ on: push: branches: - main + pull_request: + branches: + - main jobs: gitlab-integration-trusted: @@ -27,17 +30,17 @@ jobs: environment: gitlab steps: - name: Harden Runner - uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v1 + uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - name: Clone the code - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 with: - fetch-depth: 0 + ref: ${{ github.event.pull_request.head.sha || github.sha }} # head SHA if PR, else fallback to push SHA - name: setup-go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v2.2.0 + uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 with: go-version: '1.19' check-latest: true @@ -46,9 +49,18 @@ jobs: run: | go mod download + - name: Run GitLab tokenless E2E + uses: nick-invision/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd # v2.8.3 + if: github.event_name == 'pull_request' + with: + max_attempts: 3 + retry_on: error + timeout_minutes: 30 + command: make e2e-gitlab + - name: Run GitLab PAT E2E # skip if auth token is not available - uses: nick-invision/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd - if: ${{ github.actor != 'dependabot[bot]' }} + uses: nick-invision/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd # v2.8.3 + if: ${{ github.event_name == 'push' && github.actor != 'dependabot[bot]' }} env: GITLAB_AUTH_TOKEN: ${{ secrets.GITLAB_TOKEN }} with: @@ -58,7 +70,7 @@ jobs: command: make e2e-gitlab-token - name: codecov - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # 2.1.0 + uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # 3.1.4 with: - files: ./e2e-coverage.out - verbose: true \ No newline at end of file + files: "*e2e-coverage.out" + verbose: true diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 32bb9998ddf..f2e88119a0b 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -60,20 +60,6 @@ jobs: run: | go mod download - - name: Run GitLab E2E #using retry because the GitHub token is being throttled. - uses: nick-invision/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd - with: - max_attempts: 3 - retry_on: error - timeout_minutes: 30 - command: make e2e-gitlab - - - name: codecov - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # 2.1.0 - with: - files: ./e2e-coverage.out - verbose: true - - name: Run GITHUB_TOKEN E2E #using retry because the GitHub token is being throttled. uses: nick-invision/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd env: From fe46425b5273e9243ddfa6ddc1e6194e439ed547 Mon Sep 17 00:00:00 2001 From: Spencer Schrock Date: Fri, 21 Jul 2023 14:46:49 -0700 Subject: [PATCH 083/125] :seedling: Add separate cache for long-running tests (#3293) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add separate cache for unit tests. Signed-off-by: Spencer Schrock * share cache with gitlab tests too. Signed-off-by: Spencer Schrock * share cache with github integration tests. Signed-off-by: Spencer Schrock * explicitly download modules in unit test job Signed-off-by: Spencer Schrock * checkout needs to be before the go.mod is read. Signed-off-by: Spencer Schrock * checkout needs to be before the go.sum files are hashed. Signed-off-by: Spencer Schrock --------- Signed-off-by: Spencer Schrock Signed-off-by: André Backman --- .github/workflows/gitlab.yml | 24 +++++++++++++++---- .github/workflows/integration.yml | 36 ++++++++++++++++++++-------- .github/workflows/main.yml | 40 ++++++++++++++++--------------- 3 files changed, 67 insertions(+), 33 deletions(-) diff --git a/.github/workflows/gitlab.yml b/.github/workflows/gitlab.yml index 964c47f2834..6ba61e9405f 100644 --- a/.github/workflows/gitlab.yml +++ b/.github/workflows/gitlab.yml @@ -24,6 +24,9 @@ on: branches: - main +env: + GO_VERSION_FILE: go.mod # no good way of getting a mutual version between go.mod and tools/go.mod + jobs: gitlab-integration-trusted: runs-on: ubuntu-latest @@ -33,17 +36,30 @@ jobs: uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - name: Clone the code uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 with: ref: ${{ github.event.pull_request.head.sha || github.sha }} # head SHA if PR, else fallback to push SHA - - - name: setup-go + - name: Setup Go uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 with: - go-version: '1.19' + go-version-file: ${{ env.GO_VERSION_FILE }} check-latest: true + cache: false # we manually manage caches below + - id: go-cache-paths + run: | + echo "go-build=$(go env GOCACHE)" >> "$GITHUB_OUTPUT" + echo "go-mod=$(go env GOMODCACHE)" >> "$GITHUB_OUTPUT" + - name: Cache builds + # https://github.com/mvdan/github-actions-golang#how-do-i-set-up-caching-between-builds + uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 #v3.3.1 + with: + path: | + ${{ steps.go-cache-paths.outputs.go-build }} + ${{ steps.go-cache-paths.outputs.go-mod }} + key: ${{ runner.os }}-go-tests-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go-tests- - name: Prepare test env run: | diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index f2e88119a0b..c4e70ccf88d 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -23,6 +23,9 @@ on: permissions: contents: read +env: + GO_VERSION_FILE: go.mod # no good way of getting a mutual version between go.mod and tools/go.mod + jobs: approve: runs-on: ubuntu-latest @@ -41,27 +44,40 @@ jobs: needs: [approve] steps: - name: Harden Runner - uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v1 + uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - name: pull_request actions/checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v2.3.4 + - name: Clone the code + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 with: ref: ${{ github.event.pull_request.head.sha }} - - - name: setup-go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v2.2.0 + - name: Setup Go + uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 with: - go-version: '1.19' + go-version-file: ${{ env.GO_VERSION_FILE }} check-latest: true + cache: false # we manually manage caches below + - id: go-cache-paths + run: | + echo "go-build=$(go env GOCACHE)" >> "$GITHUB_OUTPUT" + echo "go-mod=$(go env GOMODCACHE)" >> "$GITHUB_OUTPUT" + - name: Cache builds + # https://github.com/mvdan/github-actions-golang#how-do-i-set-up-caching-between-builds + uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 #v3.3.1 + with: + path: | + ${{ steps.go-cache-paths.outputs.go-build }} + ${{ steps.go-cache-paths.outputs.go-mod }} + key: ${{ runner.os }}-go-tests-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go-tests- - name: Prepare test env run: | go mod download - name: Run GITHUB_TOKEN E2E #using retry because the GitHub token is being throttled. - uses: nick-invision/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd + uses: nick-invision/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd # v2.8.3 env: GITHUB_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -71,7 +87,7 @@ jobs: command: make e2e-gh-token - name: codecov - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # 2.1.0 + uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # 3.1.4 with: files: "*e2e-coverage.out" verbose: true diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 16457560133..a995caa1c77 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -37,36 +37,38 @@ jobs: contents: read steps: - name: Harden Runner - uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v1 + uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - + - name: Clone the code + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - name: Setup Go + uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 + with: + go-version: ${{ env.GO_VERSION }} + check-latest: true + cache: false # we manually manage caches below + - id: go-cache-paths + run: | + echo "go-build=$(go env GOCACHE)" >> "$GITHUB_OUTPUT" + echo "go-mod=$(go env GOMODCACHE)" >> "$GITHUB_OUTPUT" - name: Cache builds # https://github.com/mvdan/github-actions-golang#how-do-i-set-up-caching-between-builds uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 #v3.3.1 with: path: | - ~/go/pkg/mod - ~/.cache/go-build - ~/Library/Caches/go-build - %LocalAppData%\go-build - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + ${{ steps.go-cache-paths.outputs.go-build }} + ${{ steps.go-cache-paths.outputs.go-mod }} + key: ${{ runner.os }}-go-tests-${{ hashFiles('**/go.sum') }} restore-keys: | - ${{ runner.os }}-go- - - name: Clone the code - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v2.3.4 - with: - fetch-depth: 0 - - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v2.2.0 - with: - go-version: ${{ env.GO_VERSION }} - check-latest: true - cache: true + ${{ runner.os }}-go-tests- + - name: Prepare test env + run: | + go mod download - name: Run unit-tests run: make unit-test - name: Upload codecoverage - uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # 2.1.0 + uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # 3.1.4 with: files: ./unit-coverage.out verbose: true From 3d945aad6717612de05b3f2fca0bc336e17e353e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Jul 2023 10:18:10 -0500 Subject: [PATCH 084/125] :seedling: Bump github.com/go-git/go-git/v5 from 5.7.0 to 5.8.0 (#3297) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) from 5.7.0 to 5.8.0. - [Release notes](https://github.com/go-git/go-git/releases) - [Commits](https://github.com/go-git/go-git/compare/v5.7.0...v5.8.0) --- updated-dependencies: - dependency-name: github.com/go-git/go-git/v5 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: André Backman --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index a752203563b..a86c0378e85 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( contrib.go.opencensus.io/exporter/stackdriver v0.13.14 github.com/bombsimon/logrusr/v2 v2.0.1 github.com/bradleyfalzon/ghinstallation/v2 v2.6.0 - github.com/go-git/go-git/v5 v5.7.0 + github.com/go-git/go-git/v5 v5.8.0 github.com/go-logr/logr v1.2.4 github.com/golang/mock v1.6.0 github.com/google/go-cmp v0.5.9 diff --git a/go.sum b/go.sum index 1c7f445dd2b..31daad5d4f3 100644 --- a/go.sum +++ b/go.sum @@ -256,8 +256,8 @@ github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmS github.com/go-git/go-billy/v5 v5.4.1 h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4= github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20230305113008-0c11038e723f h1:Pz0DHeFij3XFhoBRGUDPzSJ+w2UcK5/0JvF8DRI58r8= -github.com/go-git/go-git/v5 v5.7.0 h1:t9AudWVLmqzlo+4bqdf7GY+46SUuRsx59SboFxkq2aE= -github.com/go-git/go-git/v5 v5.7.0/go.mod h1:coJHKEOk5kUClpsNlXrUvPrDxY3w3gjHvhcZd8Fodw8= +github.com/go-git/go-git/v5 v5.8.0 h1:Rc543s6Tyq+YcyPwZRvU4jzZGM8rB/wWu94TnTIYALQ= +github.com/go-git/go-git/v5 v5.8.0/go.mod h1:coJHKEOk5kUClpsNlXrUvPrDxY3w3gjHvhcZd8Fodw8= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= From e36c0cf78a2f5599fef302d5fa2313922436a52e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Jul 2023 15:28:31 +0000 Subject: [PATCH 085/125] :seedling: Bump github.com/onsi/gomega from 1.27.8 to 1.27.9 (#3298) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.27.8 to 1.27.9. - [Release notes](https://github.com/onsi/gomega/releases) - [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/gomega/compare/v1.27.8...v1.27.9) --- updated-dependencies: - dependency-name: github.com/onsi/gomega dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Signed-off-by: André Backman --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index a86c0378e85..e7383b63761 100644 --- a/go.mod +++ b/go.mod @@ -26,7 +26,7 @@ require ( github.com/jszwec/csvutil v1.8.0 github.com/moby/buildkit v0.12.0 github.com/olekukonko/tablewriter v0.0.5 - github.com/onsi/gomega v1.27.8 + github.com/onsi/gomega v1.27.9 github.com/shurcooL/githubv4 v0.0.0-20201206200315-234843c633fa github.com/shurcooL/graphql v0.0.0-20200928012149-18c5c3165e3a github.com/sirupsen/logrus v1.9.3 diff --git a/go.sum b/go.sum index 31daad5d4f3..c48920abb90 100644 --- a/go.sum +++ b/go.sum @@ -594,8 +594,8 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= -github.com/onsi/gomega v1.27.8 h1:gegWiwZjBsf2DgiSbf5hpokZ98JVDMcWkUiigk6/KXc= -github.com/onsi/gomega v1.27.8/go.mod h1:2J8vzI/s+2shY9XHRApDkdgPo1TKT7P2u6fXeJKFnNQ= +github.com/onsi/gomega v1.27.9 h1:qIyVWbOsvQEye2QCqLsNSeH/5L1RS9vS382erEWfT3o= +github.com/onsi/gomega v1.27.9/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= From bcecbe0195e1a1d6b9f968c34f63dcfb658ba6b0 Mon Sep 17 00:00:00 2001 From: Naveen <172697+naveensrinivasan@users.noreply.github.com> Date: Mon, 24 Jul 2023 10:46:14 -0500 Subject: [PATCH 086/125] :seedling: Improve search commit e2e tests (#3295) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add 2 tests for searching commits in e2e/searchCommits_test.go - Fix errors in e2e/searchCommits_test.go when not using HEAD or when user does not exist [e2e/searchCommits_test.go] - Add 2 tests for searching commits - Fix error when not using HEAD - Fix error when user does not exist Signed-off-by: naveensrinivasan <172697+naveensrinivasan@users.noreply.github.com> Signed-off-by: André Backman --- e2e/searchCommits_test.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/e2e/searchCommits_test.go b/e2e/searchCommits_test.go index 1d8d8c419f0..db6e42c3b17 100644 --- a/e2e/searchCommits_test.go +++ b/e2e/searchCommits_test.go @@ -36,5 +36,21 @@ var _ = Describe("E2E TEST:SearchCommits", func() { Expect(err).Should(BeNil()) Expect(len(commits)).Should(BeNumerically(">", 0)) }) + It("Should return error as it is not using HEAD", func() { + repo, err := githubrepo.MakeGithubRepo("ossf/scorecard") + Expect(err).Should(BeNil()) + repoClient := githubrepo.CreateGithubRepoClient(context.Background(), logger) + err = repoClient.InitRepo(repo, "123456789", 0) + Expect(err).ShouldNot(Not(BeNil())) + }) + It("Should return error as the user does not exists", func() { + repo, err := githubrepo.MakeGithubRepo("ossf/scorecard") + Expect(err).Should(BeNil()) + repoClient := githubrepo.CreateGithubRepoClient(context.Background(), logger) + err = repoClient.InitRepo(repo, clients.HeadSHA, 0) + Expect(err).Should(BeNil()) + _, err = repoClient.SearchCommits(clients.SearchCommitsOptions{Author: "thisuserdoesnotexists"}) + Expect(err).ShouldNot(BeNil()) + }) }) }) From 16ff86ed198f5a65599d70d2ecb4b0150de8476f Mon Sep 17 00:00:00 2001 From: Caroline Date: Mon, 24 Jul 2023 13:04:43 -0400 Subject: [PATCH 087/125] =?UTF-8?q?=F0=9F=93=96=20=20update=20docs=20for?= =?UTF-8?q?=20webhooks=20documentation=20(#3299)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * update docs for webhooks documentation Signed-off-by: leec94 * change webhook severity in readme Signed-off-by: leec94 --------- Signed-off-by: leec94 Signed-off-by: André Backman --- README.md | 2 +- docs/checks.md | 22 +++++++++++----------- docs/checks/internal/checks.yaml | 8 ++++---- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index f5e59c76d34..5906a6eb10f 100644 --- a/README.md +++ b/README.md @@ -467,7 +467,7 @@ Name | Description | Risk Level | Token Req [Signed-Releases](docs/checks.md#signed-releases) | Does the project cryptographically [sign releases](https://wiki.debian.org/Creating%20signed%20GitHub%20releases)? | High | PAT, GITHUB_TOKEN | Validating | [Token-Permissions](docs/checks.md#token-permissions) | Does the project declare GitHub workflow tokens as [read only](https://docs.github.com/en/actions/reference/authentication-in-a-workflow)? | High | PAT, GITHUB_TOKEN | Unsupported | [Vulnerabilities](docs/checks.md#vulnerabilities) | Does the project have unfixed vulnerabilities? Uses the [OSV service](https://osv.dev). | High | PAT, GITHUB_TOKEN | Validating | -[Webhooks](docs/checks.md#webhooks) | Does the webhook defined in the repository have a token configured to authenticate the origins of requests? | High | maintainer PAT (`admin: repo_hook` or `admin> read:repo_hook` [doc](https://docs.github.com/en/rest/webhooks/repo-config#get-a-webhook-configuration-for-a-repository) | | EXPERIMENTAL +[Webhooks](docs/checks.md#webhooks) | Does the webhook defined in the repository have a token configured to authenticate the origins of requests? | Critical | maintainer PAT (`admin: repo_hook` or `admin> read:repo_hook` [doc](https://docs.github.com/en/rest/webhooks/repo-config#get-a-webhook-configuration-for-a-repository) | | EXPERIMENTAL ### Detailed Checks Documentation diff --git a/docs/checks.md b/docs/checks.md index a8aafd8a937..8f7d5c026d0 100644 --- a/docs/checks.md +++ b/docs/checks.md @@ -65,7 +65,7 @@ certain workflows for branches, such as requiring review or passing certain status checks before acceptance into a main branch, or preventing rewriting of public history. -Note: The following settings queried by the Branch-Protection check require an admin token: `DismissStaleReviews`, `EnforceAdmin`, `StrictStatusCheck` and `RequireCodeownerReview`. If +Note: The following settings queried by the Branch-Protection check require an admin token: `DismissStaleReviews`, `EnforceAdmins`, `RequireLastPushApproval`, `RequiresStatusChecks` and `UpToDateBeforeMerge`. If the provided token does not have admin access, the check will query the branch settings accessible to non-admins and provide results based only on these settings. Even so, we recommend using a non-admin token, which provides a thorough enough @@ -102,7 +102,7 @@ commit. This test has tiered scoring. Each tier must be fully satisfied to achieve points at the next tier. For example, if you fulfill the Tier 3 checks but do not fulfill all the Tier 2 checks, you will not receive any points for Tier 3. -Note: If Scorecard is run without an administrative access token, the requirements that specify “For administrators” are ignored. +Note: If Scorecard is run without an administrative access token, the requirements that specify “For administrators” can be safely ignored, and scores will be determined as if all such requirements have been met. Tier 1 Requirements (3/10 points): - Prevent force push @@ -110,19 +110,19 @@ Tier 1 Requirements (3/10 points): - For administrators: Include administrator for review Tier 2 Requirements (6/10 points): - - Required reviewers >=1 - - For administrators: Last push review - - For administrators: Strict status checks (require branches to be up-to-date before merging) + - Require at least 1 reviewer for approval before merging + - For administrators: Require branch to be up to date before merging + - For administrators: Require approval of the most recent reviewable push Tier 3 Requirements (8/10 points): - - Status checks defined + - Require branch to pass at least 1 status check before merging Tier 4 Requirements (9/10 points): - - Required reviewers >= 2 + - Require at least 2 reviewers for approval before merging + - Require review from code owners Tier 5 Requirements (10/10 points): - - For administrators: Dismiss stale reviews - - For administrators: Require CODEOWNER review + - For administrators: Dismiss stale reviews and approvals when new commits are pushed GitLab Integration Status: - GitLab associates releases with commits and not with the branch. Releases are ignored in this portion of the scoring. @@ -677,6 +677,6 @@ This check determines whether the webhook defined in the repository has a token **Remediation steps** - Check whether your service supports token authentication. -- If there is support for token authentication, set the secret in the webhook configuration. See [Setting up a webhook](https://docs.github.com/en/developers/webhooks-and-events/webhooks/creating-webhooks#setting-up-a-webhook) -- If there is no support for token authentication, consider implementing it by following [these directions](https://docs.github.com/en/developers/webhooks-and-events/webhooks/securing-your-webhooks). +- If there is support for token authentication, set the secret in the webhook configuration. See [Setting up a webhook](https://docs.github.com/en/developers/webhooks-and-events/webhooks/creating-webhooks#setting-up-a-webhook). +- If there is no support for token authentication, request the webhook service implement token authentication functionality by following [these directions](https://docs.github.com/en/developers/webhooks-and-events/webhooks/securing-your-webhooks). diff --git a/docs/checks/internal/checks.yaml b/docs/checks/internal/checks.yaml index 9233da7a4df..6151c64f516 100644 --- a/docs/checks/internal/checks.yaml +++ b/docs/checks/internal/checks.yaml @@ -814,10 +814,10 @@ checks: such as `LICENSES/Apache-2.0.txt`. Webhooks: - risk: High + risk: Critical tags: security, infrastructure repos: GitHub - short: This check validate if the webhook defined in the repository have a token configured. + short: This check validates if the webhook defined in the repository has a token configured. description: | Risk: `Critical` (service possibly accessible to third parties) @@ -826,6 +826,6 @@ checks: - >- Check whether your service supports token authentication. - >- - If there is support for token authentication, set the secret in the webhook configuration. See [Setting up a webhook](https://docs.github.com/en/developers/webhooks-and-events/webhooks/creating-webhooks#setting-up-a-webhook) + If there is support for token authentication, set the secret in the webhook configuration. See [Setting up a webhook](https://docs.github.com/en/developers/webhooks-and-events/webhooks/creating-webhooks#setting-up-a-webhook). - >- - If there is no support for token authentication, consider implementing it by following [these directions](https://docs.github.com/en/developers/webhooks-and-events/webhooks/securing-your-webhooks). + If there is no support for token authentication, request the webhook service implement token authentication functionality by following [these directions](https://docs.github.com/en/developers/webhooks-and-events/webhooks/securing-your-webhooks). From b78351ee3f66f6b91abe17aee6ca46b825721bb3 Mon Sep 17 00:00:00 2001 From: Naveen <172697+naveensrinivasan@users.noreply.github.com> Date: Mon, 24 Jul 2023 15:45:59 -0500 Subject: [PATCH 088/125] :seedling: Unit tests OSSFuzz client (#3301) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * :seedling: Unit tests OSSFuzz client - Included tests for IsArchived, LocalPath, ListFiles, GetFileContent, GetBranch, GetDefaultBranch, GetOrgRepoClient, GetDefaultBranchName, ListCommits, ListIssues, ListReleases, ListContributors, ListSuccessfulWorkflowRuns, ListCheckRunsForRef, ListStatuses, ListWebhooks, SearchCommits, Close, ListProgrammingLanguages, Signed-off-by: naveensrinivasan <172697+naveensrinivasan@users.noreply.github.com> * Improve OSSFuzz client tests [clients/ossfuzz/client_test.go] - Add a test for the `GetCreatedAt` method - Fix the `URI` method to return the correct value Signed-off-by: naveensrinivasan <172697+naveensrinivasan@users.noreply.github.com> --------- Signed-off-by: naveensrinivasan <172697+naveensrinivasan@users.noreply.github.com> Signed-off-by: André Backman --- clients/ossfuzz/client_test.go | 186 +++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) diff --git a/clients/ossfuzz/client_test.go b/clients/ossfuzz/client_test.go index d7c18720afe..7a964645833 100644 --- a/clients/ossfuzz/client_test.go +++ b/clients/ossfuzz/client_test.go @@ -15,6 +15,8 @@ package ossfuzz import ( + "context" + "errors" "fmt" "net/http" "net/http/httptest" @@ -180,3 +182,187 @@ func setupServer(t *testing.T) string { t.Cleanup(server.Close) return server.URL } + +func TestAllClientMethods(t *testing.T) { + c := CreateOSSFuzzClient("testURL") + + // Test InitRepo + { + err := c.InitRepo(nil, "", 0) + if !errors.Is(err, clients.ErrUnsupportedFeature) { + t.Errorf("InitRepo: Expected %v, but got %v", clients.ErrUnsupportedFeature, err) + } + } + + // Test IsArchived + { + _, err := c.IsArchived() + if !errors.Is(err, clients.ErrUnsupportedFeature) { + t.Errorf("IsArchived: Expected %v, but got %v", clients.ErrUnsupportedFeature, err) + } + } + + // Test LocalPath + { + _, err := c.LocalPath() + if !errors.Is(err, clients.ErrUnsupportedFeature) { + t.Errorf("LocalPath: Expected %v, but got %v", clients.ErrUnsupportedFeature, err) + } + } + + // Test ListFiles + { + _, err := c.ListFiles(nil) + if !errors.Is(err, clients.ErrUnsupportedFeature) { + t.Errorf("ListFiles: Expected %v, but got %v", clients.ErrUnsupportedFeature, err) + } + } + + // Test GetFileContent + { + _, err := c.GetFileContent("") + if !errors.Is(err, clients.ErrUnsupportedFeature) { + t.Errorf("GetFileContent: Expected %v, but got %v", clients.ErrUnsupportedFeature, err) + } + } + + // Test GetBranch + { + _, err := c.GetBranch("") + if !errors.Is(err, clients.ErrUnsupportedFeature) { + t.Errorf("GetBranch: Expected %v, but got %v", clients.ErrUnsupportedFeature, err) + } + } + + // Test GetDefaultBranch + { + _, err := c.GetDefaultBranch() + if !errors.Is(err, clients.ErrUnsupportedFeature) { + t.Errorf("GetDefaultBranch: Expected %v, but got %v", clients.ErrUnsupportedFeature, err) + } + } + + // Test GetOrgRepoClient + { + _, err := c.GetOrgRepoClient(context.Background()) + if !errors.Is(err, clients.ErrUnsupportedFeature) { + t.Errorf("GetOrgRepoClient: Expected %v, but got %v", clients.ErrUnsupportedFeature, err) + } + } + + // Test GetDefaultBranchName + { + _, err := c.GetDefaultBranchName() + if !errors.Is(err, clients.ErrUnsupportedFeature) { + t.Errorf("GetDefaultBranchName: Expected %v, but got %v", clients.ErrUnsupportedFeature, err) + } + } + + // Test ListCommits + { + _, err := c.ListCommits() + if !errors.Is(err, clients.ErrUnsupportedFeature) { + t.Errorf("ListCommits: Expected %v, but got %v", clients.ErrUnsupportedFeature, err) + } + } + + // Test ListIssues + { + _, err := c.ListIssues() + if !errors.Is(err, clients.ErrUnsupportedFeature) { + t.Errorf("ListIssues: Expected %v, but got %v", clients.ErrUnsupportedFeature, err) + } + } + + // Test ListReleases + { + _, err := c.ListReleases() + if !errors.Is(err, clients.ErrUnsupportedFeature) { + t.Errorf("ListReleases: Expected %v, but got %v", clients.ErrUnsupportedFeature, err) + } + } + + // Test ListContributors + { + _, err := c.ListContributors() + if !errors.Is(err, clients.ErrUnsupportedFeature) { + t.Errorf("ListContributors: Expected %v, but got %v", clients.ErrUnsupportedFeature, err) + } + } + + // Test ListSuccessfulWorkflowRuns + { + _, err := c.ListSuccessfulWorkflowRuns("") + if !errors.Is(err, clients.ErrUnsupportedFeature) { + t.Errorf("ListSuccessfulWorkflowRuns: Expected %v, but got %v", clients.ErrUnsupportedFeature, err) + } + } + + // Test ListCheckRunsForRef + { + _, err := c.ListCheckRunsForRef("") + if !errors.Is(err, clients.ErrUnsupportedFeature) { + t.Errorf("ListCheckRunsForRef: Expected %v, but got %v", clients.ErrUnsupportedFeature, err) + } + } + + // Test ListStatuses + { + _, err := c.ListStatuses("") + if !errors.Is(err, clients.ErrUnsupportedFeature) { + t.Errorf("ListStatuses: Expected %v, but got %v", clients.ErrUnsupportedFeature, err) + } + } + + // Test ListWebhooks + { + _, err := c.ListWebhooks() + if !errors.Is(err, clients.ErrUnsupportedFeature) { + t.Errorf("ListWebhooks: Expected %v, but got %v", clients.ErrUnsupportedFeature, err) + } + } + + // Test SearchCommits + { + _, err := c.SearchCommits(clients.SearchCommitsOptions{}) + if !errors.Is(err, clients.ErrUnsupportedFeature) { + t.Errorf("SearchCommits: Expected %v, but got %v", clients.ErrUnsupportedFeature, err) + } + } + + // Test Close + { + err := c.Close() + if err != nil { + t.Errorf("Close: Expected no error, but got %v", err) + } + } + + // Test ListProgrammingLanguages + { + _, err := c.ListProgrammingLanguages() + if !errors.Is(err, clients.ErrUnsupportedFeature) { + t.Errorf("ListProgrammingLanguages: Expected %v, but got %v", clients.ErrUnsupportedFeature, err) + } + } + + // Test ListLicenses + { + _, err := c.ListLicenses() + if !errors.Is(err, clients.ErrUnsupportedFeature) { + t.Errorf("ListLicenses: Expected %v, but got %v", clients.ErrUnsupportedFeature, err) + } + } + { + _, err := c.GetCreatedAt() + if !errors.Is(err, clients.ErrUnsupportedFeature) { + t.Errorf("GetCreatedAt: Expected %v, but got %v", clients.ErrUnsupportedFeature, err) + } + } + { + uri := c.URI() + if uri != "testURL" { + t.Errorf("URI: Expected %v, but got %v", "testURL", uri) + } + } +} From 4df887c14fb1c1d62e04734af991d92a58bf8540 Mon Sep 17 00:00:00 2001 From: Spencer Schrock Date: Mon, 24 Jul 2023 14:10:13 -0700 Subject: [PATCH 089/125] :seedling: Ensure check markdown is kept in sync with source yaml. (#3300) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Ensure check markdown is kept in sync with check yaml. Signed-off-by: Spencer Schrock * change generate-docs target to detect changes to docs/checks.md directly. Signed-off-by: Spencer Schrock --------- Signed-off-by: Spencer Schrock Signed-off-by: André Backman --- .github/workflows/main.yml | 30 ++++++------------------------ Makefile | 3 +-- 2 files changed, 7 insertions(+), 26 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a995caa1c77..2e8df3a5b15 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -143,39 +143,19 @@ jobs: contents: read steps: - name: Harden Runner - uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v1 + uses: step-security/harden-runner@55d479fb1c5bcad5a4f9099a5d9f37c8857b2845 # v2.4.1 with: egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - name: Install Protoc - uses: arduino/setup-protoc@149f6c87b92550901b26acd1632e11c3662e381f # v1.3.0 - with: - version: ${{ env.PROTOC_VERSION }} - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Cache builds - # https://github.com/mvdan/github-actions-golang#how-do-i-set-up-caching-between-builds - uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 - with: - path: | - ~/go/pkg/mod - ~/.cache/go-build - ~/Library/Caches/go-build - %LocalAppData%\go-build - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - name: Clone the code - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v2.3.4 - with: - fetch-depth: 0 + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - name: Setup Go - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v2.2.0 + uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 with: go-version: ${{ env.GO_VERSION }} check-latest: true cache: true - name: generate docs - uses: nick-invision/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd + uses: nick-invision/retry@943e742917ac94714d2f408a0e8320f2d1fcafcd # v2.8.3 with: max_attempts: 3 retry_on: error @@ -183,6 +163,8 @@ jobs: command: | go env -w GOFLAGS=-mod=mod make generate-docs + - name: ensure checks.yaml and checks.md match + run: git diff --exit-code build-proto: name: build-proto runs-on: ubuntu-latest diff --git a/Makefile b/Makefile index 720cdcca426..d3800a19b41 100644 --- a/Makefile +++ b/Makefile @@ -161,8 +161,7 @@ cmd/internal/nuget/nuget_mockclient.go: cmd/internal/nuget/client.go | $(MOCKGEN $(MOCKGEN) -source=cmd/internal/nuget/client.go -destination=cmd/internal/nuget/nuget_mockclient.go -package=nuget -copyright_file=clients/mockclients/license.txt generate-docs: ## Generates docs -generate-docs: validate-docs docs/checks.md -docs/checks.md: docs/checks/internal/checks.yaml docs/checks/internal/*.go docs/checks/internal/generate/*.go +generate-docs: validate-docs docs/checks.md docs/checks/internal/checks.yaml docs/checks/internal/*.go docs/checks/internal/generate/*.go # Generating checks.md go run ./docs/checks/internal/generate/main.go docs/checks.md From ecdac602d140b0f65e470cc91900925e73584eb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= <88145164+andrelmbackman@users.noreply.github.com> Date: Wed, 26 Jul 2023 09:21:37 +0300 Subject: [PATCH 090/125] Update def.yml license MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman <88145164+andrelmbackman@users.noreply.github.com> Signed-off-by: André Backman --- probes/codeApproved/def.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/probes/codeApproved/def.yml b/probes/codeApproved/def.yml index 6d001829403..2d31e954187 100644 --- a/probes/codeApproved/def.yml +++ b/probes/codeApproved/def.yml @@ -2,6 +2,7 @@ # Licensed under the Apache License 2.0 # SPDX-License-Identifier: Apache-2.0 + id: codeApproved short: Check that all recent changesets have been approved by someone who is not the author of the changeset. motivation: > @@ -17,4 +18,4 @@ remediation: text: - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. markdown: - - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. \ No newline at end of file + - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. From 3c748e2f1f9596c6605da7026351b9ad97d75e32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= <88145164+andrelmbackman@users.noreply.github.com> Date: Wed, 26 Jul 2023 09:22:48 +0300 Subject: [PATCH 091/125] Update def.yml license MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman <88145164+andrelmbackman@users.noreply.github.com> Signed-off-by: André Backman --- probes/codeReviewTwoReviewers/def.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/probes/codeReviewTwoReviewers/def.yml b/probes/codeReviewTwoReviewers/def.yml index 87b258d77c1..5c9ec24d440 100644 --- a/probes/codeReviewTwoReviewers/def.yml +++ b/probes/codeReviewTwoReviewers/def.yml @@ -18,4 +18,4 @@ remediation: text: - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. markdown: - - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. \ No newline at end of file + - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. From 6816000e8ca853d08709c56ccc4f49c45314c940 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= <88145164+andrelmbackman@users.noreply.github.com> Date: Wed, 26 Jul 2023 09:23:15 +0300 Subject: [PATCH 092/125] Update def.yml license MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman <88145164+andrelmbackman@users.noreply.github.com> Signed-off-by: André Backman --- probes/codeReviewed/def.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/probes/codeReviewed/def.yml b/probes/codeReviewed/def.yml index 355165d3bb0..1d1f3206689 100644 --- a/probes/codeReviewed/def.yml +++ b/probes/codeReviewed/def.yml @@ -17,4 +17,4 @@ remediation: text: - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. markdown: - - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. \ No newline at end of file + - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. From 3ceec71b2ac614dd4bfa4a46e21a6666e4d27276 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= <88145164+andrelmbackman@users.noreply.github.com> Date: Wed, 26 Jul 2023 09:25:21 +0300 Subject: [PATCH 093/125] Update code_review.go license MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman <88145164+andrelmbackman@users.noreply.github.com> Signed-off-by: André Backman --- probes/utils/code_review.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/probes/utils/code_review.go b/probes/utils/code_review.go index dd725451992..8bab7c43722 100644 --- a/probes/utils/code_review.go +++ b/probes/utils/code_review.go @@ -48,4 +48,4 @@ func ReviewerNotFound(findings []finding.Finding, probeID string, } findings = append(findings, *f) return findings, probeID, nil - } \ No newline at end of file + } From 6690d741e2db9a1c085169ab588942cd9c86b057 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= <88145164+andrelmbackman@users.noreply.github.com> Date: Wed, 26 Jul 2023 09:27:38 +0300 Subject: [PATCH 094/125] Update entries.go; CodeReviewChecks now called CodeReview MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman <88145164+andrelmbackman@users.noreply.github.com> Signed-off-by: André Backman --- probes/entries.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/probes/entries.go b/probes/entries.go index 460e6716d8e..c9058767e5e 100644 --- a/probes/entries.go +++ b/probes/entries.go @@ -40,7 +40,7 @@ var ( toolPyUpInstalled.Run, toolSonatypeLiftInstalled.Run, } - CodeReviewChecks = []ProbeImpl { + CodeReview = []ProbeImpl { codeApproved.Run, codeReviewed.Run, codeReviewTwoReviewers.Run, @@ -51,7 +51,7 @@ var ( func init() { All = concatMultipleProbes([][]ProbeImpl{ DependencyToolUpdates, - CodeReviewChecks, + CodeReview, }) } From b5db158b83fd1513557dfdf0b6e2ae92e5edb6c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Wed, 26 Jul 2023 10:17:23 +0300 Subject: [PATCH 095/125] refactor codeReviewTwoReviewers; moved utility functions into impl.go MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeReviewTwoReviewers/impl.go | 46 +++++++++++++++++++++--- probes/utils/code_review.go | 51 --------------------------- 2 files changed, 42 insertions(+), 55 deletions(-) delete mode 100644 probes/utils/code_review.go diff --git a/probes/codeReviewTwoReviewers/impl.go b/probes/codeReviewTwoReviewers/impl.go index 8ad11822822..16f407c2c2f 100644 --- a/probes/codeReviewTwoReviewers/impl.go +++ b/probes/codeReviewTwoReviewers/impl.go @@ -9,7 +9,6 @@ import ( "fmt" "github.com/ossf/scorecard/v4/checker" "github.com/ossf/scorecard/v4/finding" - "github.com/ossf/scorecard/v4/probes/utils" ) //go:embed *.yml @@ -40,15 +39,15 @@ func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri for i := range changesets { data := &changesets[i] if data.Author.Login == "" { - return utils.AuthorNotFound(findings, probeID, fs) + return authorNotFound(findings, probeID, fs) } reviewersList := make([]string, len(data.Reviews)) for i := range data.Reviews { reviewersList[i] = data.Reviews[i].Author.Login } - numReviewers := utils.UniqueReviewers(data.Author.Login, reviewersList) + numReviewers := uniqueReviewers(data.Author.Login, reviewersList) if numReviewers == noReviewerFound { - return utils.ReviewerNotFound(findings, probeID, fs) + return reviewerNotFound(findings, probeID, fs) } else if i == 0 || numReviewers < leastFoundReviewers { leastFoundReviewers = numReviewers } @@ -70,3 +69,42 @@ func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri } return findings, probeID, nil } + +func uniqueReviewers(authorLogin string, reviewers []string) int { + uniqueReviewers := 0 + for i := range reviewers { + duplicateCount := 0 + if (reviewers[i] == "") { + return -1 + } + for j := range reviewers { + if reviewers[j] == reviewers[i] && j > i { + duplicateCount++ + } + } + if reviewers[i] != authorLogin && duplicateCount == 0 { + uniqueReviewers++ + } + } + return uniqueReviewers +} + +func authorNotFound(findings []finding.Finding, probeID string, + fs embed.FS) ([]finding.Finding, string, error) { + f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprintf("Could not retrieve the author of a changeset."), nil) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + return findings, probeID, nil +} + +func reviewerNotFound(findings []finding.Finding, probeID string, + fs embed.FS) ([]finding.Finding, string, error) { + f, err := finding.NewNegative(fs, probeID, fmt.Sprintf("Could not retrieve reviewers of a changeset."), nil) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + return findings, probeID, nil + } \ No newline at end of file diff --git a/probes/utils/code_review.go b/probes/utils/code_review.go deleted file mode 100644 index 8bab7c43722..00000000000 --- a/probes/utils/code_review.go +++ /dev/null @@ -1,51 +0,0 @@ -// © 2023 Nokia -// Licensed under the Apache License 2.0 -// SPDX-License-Identifier: Apache-2.0 - -package utils - -import ( - "github.com/ossf/scorecard/v4/finding" - "embed" - "fmt" -) - -// returns the number of unique reviewers that aren't the changeset author -func UniqueReviewers(authorLogin string, reviewers []string) int { - uniqueReviewers := 0 - for i := range reviewers { - duplicateCount := 0 - if (reviewers[i] == "") { - return -1 - } - for j := range reviewers { - if reviewers[j] == reviewers[i] && j > i { - duplicateCount++ - } - } - if reviewers[i] != authorLogin && duplicateCount == 0 { - uniqueReviewers++ - } - } - return uniqueReviewers -} - -func AuthorNotFound(findings []finding.Finding, probeID string, - fs embed.FS) ([]finding.Finding, string, error) { - f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprintf("Could not retrieve the author of a changeset."), nil) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - return findings, probeID, nil -} - -func ReviewerNotFound(findings []finding.Finding, probeID string, - fs embed.FS) ([]finding.Finding, string, error) { - f, err := finding.NewNegative(fs, probeID, fmt.Sprintf("Could not retrieve reviewers of a changeset."), nil) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - return findings, probeID, nil - } From 8ee476bcc3e283473bb6e3b7b2368a6b72ac5825 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= <88145164+andrelmbackman@users.noreply.github.com> Date: Wed, 26 Jul 2023 11:37:33 +0300 Subject: [PATCH 096/125] Update impl.go, refactor codeReviewTwoReviewers; moved utility functions into impl.go MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman <88145164+andrelmbackman@users.noreply.github.com> --- probes/codeReviewTwoReviewers/impl.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/probes/codeReviewTwoReviewers/impl.go b/probes/codeReviewTwoReviewers/impl.go index 16f407c2c2f..992e0e0ca0f 100644 --- a/probes/codeReviewTwoReviewers/impl.go +++ b/probes/codeReviewTwoReviewers/impl.go @@ -107,4 +107,4 @@ func reviewerNotFound(findings []finding.Finding, probeID string, } findings = append(findings, *f) return findings, probeID, nil - } \ No newline at end of file +} From 63f7aae5f524504eab6d57189410c584a3a66aab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= <88145164+andrelmbackman@users.noreply.github.com> Date: Wed, 26 Jul 2023 15:28:12 +0300 Subject: [PATCH 097/125] Update go.mod, aligned imports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman <88145164+andrelmbackman@users.noreply.github.com> --- tools/go.mod | 8 -------- 1 file changed, 8 deletions(-) diff --git a/tools/go.mod b/tools/go.mod index 528d08fc21d..21b18ea8bc5 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -7,10 +7,6 @@ require ( github.com/golangci/golangci-lint v1.53.3 github.com/google/addlicense v1.1.1 github.com/google/ko v0.14.1 -<<<<<<< HEAD -======= - ->>>>>>> c0cb1a766374dab5c5161f857db5aefc6b474f11 github.com/goreleaser/goreleaser v1.19.2 github.com/naveensrinivasan/stunning-tribble v0.4.2 github.com/onsi/ginkgo/v2 v2.11.0 @@ -49,11 +45,7 @@ require ( github.com/Azure/go-autorest/logger v0.2.1 // indirect github.com/Azure/go-autorest/tracing v0.6.0 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 // indirect -<<<<<<< HEAD github.com/BurntSushi/toml v1.3.2 // indirect -======= - github.com/BurntSushi/toml v1.3.2 // indirect ->>>>>>> c0cb1a766374dab5c5161f857db5aefc6b474f11 github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect From 79fe5f00b88aa07645dc3bc222e5a26aa55222a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Tue, 1 Aug 2023 09:04:18 +0300 Subject: [PATCH 098/125] update license comments MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- checks/code_review.go | 2 +- checks/code_review_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/checks/code_review.go b/checks/code_review.go index 17372e52b1f..6791ca54ebe 100644 --- a/checks/code_review.go +++ b/checks/code_review.go @@ -1,4 +1,4 @@ -// Copyright 2020 OpenSSF Scorecard Authors +// Copyright 2023 OpenSSF Scorecard Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/checks/code_review_test.go b/checks/code_review_test.go index 1b48c06093f..44c7dfaa6c8 100644 --- a/checks/code_review_test.go +++ b/checks/code_review_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 OpenSSF Scorecard Authors +// Copyright 2023 OpenSSF Scorecard Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. From 7533c8c0fe0a4b03bc23679d443453829062e664 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Tue, 1 Aug 2023 09:15:15 +0300 Subject: [PATCH 099/125] update license comments MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeApproved/def.yml | 16 +++++++++++++--- probes/codeApproved/impl.go | 16 +++++++++++++--- probes/codeReviewTwoReviewers/def.yml | 16 +++++++++++++--- probes/codeReviewTwoReviewers/impl.go | 16 +++++++++++++--- probes/codeReviewed/def.yml | 16 +++++++++++++--- probes/codeReviewed/impl.go | 16 +++++++++++++--- 6 files changed, 78 insertions(+), 18 deletions(-) diff --git a/probes/codeApproved/def.yml b/probes/codeApproved/def.yml index 2d31e954187..2fc0f85f421 100644 --- a/probes/codeApproved/def.yml +++ b/probes/codeApproved/def.yml @@ -1,6 +1,16 @@ -# © 2023 Nokia -# Licensed under the Apache License 2.0 -# SPDX-License-Identifier: Apache-2.0 +# Copyright 2023 OpenSSF Scorecard Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. id: codeApproved diff --git a/probes/codeApproved/impl.go b/probes/codeApproved/impl.go index 8df2456520d..bf885f6cf97 100644 --- a/probes/codeApproved/impl.go +++ b/probes/codeApproved/impl.go @@ -1,6 +1,16 @@ -// © 2023 Nokia -// Licensed under the Apache License 2.0 -// SPDX-License-Identifier: Apache-2.0 +// Copyright 2023 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. package codeApproved diff --git a/probes/codeReviewTwoReviewers/def.yml b/probes/codeReviewTwoReviewers/def.yml index 5c9ec24d440..9b9b97b61a6 100644 --- a/probes/codeReviewTwoReviewers/def.yml +++ b/probes/codeReviewTwoReviewers/def.yml @@ -1,6 +1,16 @@ -# © 2023 Nokia -# Licensed under the Apache License 2.0 -# SPDX-License-Identifier: Apache-2.0 +# Copyright 2023 OpenSSF Scorecard Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. id: codeReviewTwoReviewers short: Check that at least two reviewers review a change before merging. diff --git a/probes/codeReviewTwoReviewers/impl.go b/probes/codeReviewTwoReviewers/impl.go index 992e0e0ca0f..3e6d23d639d 100644 --- a/probes/codeReviewTwoReviewers/impl.go +++ b/probes/codeReviewTwoReviewers/impl.go @@ -1,6 +1,16 @@ -// © 2023 Nokia -// Licensed under the Apache License 2.0 -// SPDX-License-Identifier: Apache-2.0 +// Copyright 2023 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. package codeReviewTwoReviewers diff --git a/probes/codeReviewed/def.yml b/probes/codeReviewed/def.yml index 1d1f3206689..bf103078c07 100644 --- a/probes/codeReviewed/def.yml +++ b/probes/codeReviewed/def.yml @@ -1,6 +1,16 @@ -# © 2023 Nokia -# Licensed under the Apache License 2.0 -# SPDX-License-Identifier: Apache-2.0 +# Copyright 2023 OpenSSF Scorecard Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. id: codeReviewed short: Check that there is some review activity for each changeset. diff --git a/probes/codeReviewed/impl.go b/probes/codeReviewed/impl.go index cefa0902950..a2b27b3a4d0 100644 --- a/probes/codeReviewed/impl.go +++ b/probes/codeReviewed/impl.go @@ -1,6 +1,16 @@ -// © 2023 Nokia -// Licensed under the Apache License 2.0 -// SPDX-License-Identifier: Apache-2.0 +// Copyright 2023 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. package codeReviewed From bbb281ce13abf31c4d5cecac69c77d742ab3b84e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Tue, 1 Aug 2023 09:21:24 +0300 Subject: [PATCH 100/125] change EOL = CRLF to LF MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeApproved/def.yml | 62 +++---- probes/codeApproved/impl.go | 142 +++++++-------- probes/codeReviewTwoReviewers/def.yml | 62 +++---- probes/codeReviewTwoReviewers/impl.go | 240 +++++++++++++------------- probes/codeReviewed/def.yml | 60 +++---- probes/codeReviewed/impl.go | 136 +++++++-------- 6 files changed, 351 insertions(+), 351 deletions(-) diff --git a/probes/codeApproved/def.yml b/probes/codeApproved/def.yml index 2fc0f85f421..92e80059cb1 100644 --- a/probes/codeApproved/def.yml +++ b/probes/codeApproved/def.yml @@ -1,31 +1,31 @@ -# Copyright 2023 OpenSSF Scorecard Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -id: codeApproved -short: Check that all recent changesets have been approved by someone who is not the author of the changeset. -motivation: > - To ensure that the review process works, the proposed changes - should have a minimum number of approvals. -implementation: > - The implementation looks for the reviews of a changeset and that their state is "APPROVED" -outcome: - - If all changesets were approved, the probe returns OutcomePositive (1) - - If a changeset was not approved, the prove returns OutcomeNegative (0) -remediation: - effort: Low - text: - - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. - markdown: - - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. +# Copyright 2023 OpenSSF Scorecard Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +id: codeApproved +short: Check that all recent changesets have been approved by someone who is not the author of the changeset. +motivation: > + To ensure that the review process works, the proposed changes + should have a minimum number of approvals. +implementation: > + The implementation looks for the reviews of a changeset and that their state is "APPROVED" +outcome: + - If all changesets were approved, the probe returns OutcomePositive (1) + - If a changeset was not approved, the prove returns OutcomeNegative (0) +remediation: + effort: Low + text: + - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. + markdown: + - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. diff --git a/probes/codeApproved/impl.go b/probes/codeApproved/impl.go index bf885f6cf97..94a48675875 100644 --- a/probes/codeApproved/impl.go +++ b/probes/codeApproved/impl.go @@ -1,71 +1,71 @@ -// Copyright 2023 OpenSSF Scorecard Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package codeApproved - -import ( - "embed" - "fmt" - - "github.com/ossf/scorecard/v4/checker" - "github.com/ossf/scorecard/v4/finding" -) - -//go:embed *.yml -var fs embed.FS - -const probe = "codeApproved" - -func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { - rawReviewData := &raw.CodeReviewResults - return approvedRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) -} - -/* -** Looks through the data and validates that each changeset has been approved at least once. -*/ - -func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, - positiveOutcome, negativeOutcome finding.Outcome, -) ([]finding.Finding, string, error) { - var findings []finding.Finding - var approvedReviews = 0 - changesets := reviewData.DefaultBranchChangesets - var numChangesets = len(changesets) - for x := range changesets { - data := &changesets[x] - for y := range data.Reviews { - if data.Reviews[y].State == "APPROVED" && data.Reviews[y].Author.Login != data.Author.Login { - approvedReviews += 1 - break - } - } - } - if approvedReviews >= numChangesets { - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets approved (%v out of %v).", approvedReviews, numChangesets), - nil, positiveOutcome) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - } else { - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets approved. Found %v approvals among %v changesets.", approvedReviews, numChangesets), - nil, negativeOutcome) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - } - return findings, probeID, nil -} +// Copyright 2023 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package codeApproved + +import ( + "embed" + "fmt" + + "github.com/ossf/scorecard/v4/checker" + "github.com/ossf/scorecard/v4/finding" +) + +//go:embed *.yml +var fs embed.FS + +const probe = "codeApproved" + +func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { + rawReviewData := &raw.CodeReviewResults + return approvedRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) +} + +/* +** Looks through the data and validates that each changeset has been approved at least once. +*/ + +func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, + positiveOutcome, negativeOutcome finding.Outcome, +) ([]finding.Finding, string, error) { + var findings []finding.Finding + var approvedReviews = 0 + changesets := reviewData.DefaultBranchChangesets + var numChangesets = len(changesets) + for x := range changesets { + data := &changesets[x] + for y := range data.Reviews { + if data.Reviews[y].State == "APPROVED" && data.Reviews[y].Author.Login != data.Author.Login { + approvedReviews += 1 + break + } + } + } + if approvedReviews >= numChangesets { + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets approved (%v out of %v).", approvedReviews, numChangesets), + nil, positiveOutcome) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + } else { + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets approved. Found %v approvals among %v changesets.", approvedReviews, numChangesets), + nil, negativeOutcome) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + } + return findings, probeID, nil +} diff --git a/probes/codeReviewTwoReviewers/def.yml b/probes/codeReviewTwoReviewers/def.yml index 9b9b97b61a6..ae7605db719 100644 --- a/probes/codeReviewTwoReviewers/def.yml +++ b/probes/codeReviewTwoReviewers/def.yml @@ -1,31 +1,31 @@ -# Copyright 2023 OpenSSF Scorecard Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -id: codeReviewTwoReviewers -short: Check that at least two reviewers review a change before merging. -motivation: > - To ensure that the review process works, the proposed changes - should have a minimum number of approvals. -implementation: > - The implementation looks for the number of reviewers for the last few changesets. - Only unique reviewer logins that aren't the same as the changeset author are counted. -outcome: - - If all the changes had at least two reviewers, the probe returns OutcomePositive (1) - - If the changes had fewer than two reviewers, the prove returns OutcomeNegative (0) -remediation: - effort: Low - text: - - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. - markdown: - - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. +# Copyright 2023 OpenSSF Scorecard Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +id: codeReviewTwoReviewers +short: Check that at least two reviewers review a change before merging. +motivation: > + To ensure that the review process works, the proposed changes + should have a minimum number of approvals. +implementation: > + The implementation looks for the number of reviewers for the last few changesets. + Only unique reviewer logins that aren't the same as the changeset author are counted. +outcome: + - If all the changes had at least two reviewers, the probe returns OutcomePositive (1) + - If the changes had fewer than two reviewers, the prove returns OutcomeNegative (0) +remediation: + effort: Low + text: + - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. + markdown: + - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. diff --git a/probes/codeReviewTwoReviewers/impl.go b/probes/codeReviewTwoReviewers/impl.go index 3e6d23d639d..d33ca9d07bb 100644 --- a/probes/codeReviewTwoReviewers/impl.go +++ b/probes/codeReviewTwoReviewers/impl.go @@ -1,120 +1,120 @@ -// Copyright 2023 OpenSSF Scorecard Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package codeReviewTwoReviewers - -import ( - "embed" - "fmt" - "github.com/ossf/scorecard/v4/checker" - "github.com/ossf/scorecard/v4/finding" -) - -//go:embed *.yml -var fs embed.FS - -const probe = "codeReviewTwoReviewers" -const minimumReviewers = 2 -const noReviewerFound = -1 - -func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { - rawReviewData := &raw.CodeReviewResults - return codeReviewRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) -} - -/* -** Looks through the data and validates author and reviewers of a changeset -** Scorecard currently only supports GitHub revisions and generates a positive -** score in the case of other platforms. This probe is created to ensure that -** there are a number of unique reviewers for each changeset. - */ - -func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, - positiveOutcome, negativeOutcome finding.Outcome, -) ([]finding.Finding, string, error) { - var findings []finding.Finding - leastFoundReviewers := 0 - changesets := reviewData.DefaultBranchChangesets - for i := range changesets { - data := &changesets[i] - if data.Author.Login == "" { - return authorNotFound(findings, probeID, fs) - } - reviewersList := make([]string, len(data.Reviews)) - for i := range data.Reviews { - reviewersList[i] = data.Reviews[i].Author.Login - } - numReviewers := uniqueReviewers(data.Author.Login, reviewersList) - if numReviewers == noReviewerFound { - return reviewerNotFound(findings, probeID, fs) - } else if i == 0 || numReviewers < leastFoundReviewers { - leastFoundReviewers = numReviewers - } - } - if leastFoundReviewers >= minimumReviewers { - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewers found for at least one changeset, %v wanted.", leastFoundReviewers, minimumReviewers), - nil, positiveOutcome) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - } else { - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewer(s) found for at least one changeset, %v wanted.", leastFoundReviewers, minimumReviewers), - nil, negativeOutcome) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - } - return findings, probeID, nil -} - -func uniqueReviewers(authorLogin string, reviewers []string) int { - uniqueReviewers := 0 - for i := range reviewers { - duplicateCount := 0 - if (reviewers[i] == "") { - return -1 - } - for j := range reviewers { - if reviewers[j] == reviewers[i] && j > i { - duplicateCount++ - } - } - if reviewers[i] != authorLogin && duplicateCount == 0 { - uniqueReviewers++ - } - } - return uniqueReviewers -} - -func authorNotFound(findings []finding.Finding, probeID string, - fs embed.FS) ([]finding.Finding, string, error) { - f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprintf("Could not retrieve the author of a changeset."), nil) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - return findings, probeID, nil -} - -func reviewerNotFound(findings []finding.Finding, probeID string, - fs embed.FS) ([]finding.Finding, string, error) { - f, err := finding.NewNegative(fs, probeID, fmt.Sprintf("Could not retrieve reviewers of a changeset."), nil) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - return findings, probeID, nil -} +// Copyright 2023 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package codeReviewTwoReviewers + +import ( + "embed" + "fmt" + "github.com/ossf/scorecard/v4/checker" + "github.com/ossf/scorecard/v4/finding" +) + +//go:embed *.yml +var fs embed.FS + +const probe = "codeReviewTwoReviewers" +const minimumReviewers = 2 +const noReviewerFound = -1 + +func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { + rawReviewData := &raw.CodeReviewResults + return codeReviewRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) +} + +/* +** Looks through the data and validates author and reviewers of a changeset +** Scorecard currently only supports GitHub revisions and generates a positive +** score in the case of other platforms. This probe is created to ensure that +** there are a number of unique reviewers for each changeset. + */ + +func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, + positiveOutcome, negativeOutcome finding.Outcome, +) ([]finding.Finding, string, error) { + var findings []finding.Finding + leastFoundReviewers := 0 + changesets := reviewData.DefaultBranchChangesets + for i := range changesets { + data := &changesets[i] + if data.Author.Login == "" { + return authorNotFound(findings, probeID, fs) + } + reviewersList := make([]string, len(data.Reviews)) + for i := range data.Reviews { + reviewersList[i] = data.Reviews[i].Author.Login + } + numReviewers := uniqueReviewers(data.Author.Login, reviewersList) + if numReviewers == noReviewerFound { + return reviewerNotFound(findings, probeID, fs) + } else if i == 0 || numReviewers < leastFoundReviewers { + leastFoundReviewers = numReviewers + } + } + if leastFoundReviewers >= minimumReviewers { + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewers found for at least one changeset, %v wanted.", leastFoundReviewers, minimumReviewers), + nil, positiveOutcome) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + } else { + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewer(s) found for at least one changeset, %v wanted.", leastFoundReviewers, minimumReviewers), + nil, negativeOutcome) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + } + return findings, probeID, nil +} + +func uniqueReviewers(authorLogin string, reviewers []string) int { + uniqueReviewers := 0 + for i := range reviewers { + duplicateCount := 0 + if (reviewers[i] == "") { + return -1 + } + for j := range reviewers { + if reviewers[j] == reviewers[i] && j > i { + duplicateCount++ + } + } + if reviewers[i] != authorLogin && duplicateCount == 0 { + uniqueReviewers++ + } + } + return uniqueReviewers +} + +func authorNotFound(findings []finding.Finding, probeID string, + fs embed.FS) ([]finding.Finding, string, error) { + f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprintf("Could not retrieve the author of a changeset."), nil) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + return findings, probeID, nil +} + +func reviewerNotFound(findings []finding.Finding, probeID string, + fs embed.FS) ([]finding.Finding, string, error) { + f, err := finding.NewNegative(fs, probeID, fmt.Sprintf("Could not retrieve reviewers of a changeset."), nil) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + return findings, probeID, nil +} diff --git a/probes/codeReviewed/def.yml b/probes/codeReviewed/def.yml index bf103078c07..740e97d267c 100644 --- a/probes/codeReviewed/def.yml +++ b/probes/codeReviewed/def.yml @@ -1,30 +1,30 @@ -# Copyright 2023 OpenSSF Scorecard Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -id: codeReviewed -short: Check that there is some review activity for each changeset. -motivation: > - To ensure that the review process works, the proposed changes - should have a minimum number of reviews. -implementation: > - The implementation looks for the reviews of a changeset. -outcome: - - If all changesets have review activity, the probe returns OutcomePositive (1) - - If a changeset has no review activity, the prove returns OutcomeNegative (0) -remediation: - effort: Low - text: - - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. - markdown: - - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. +# Copyright 2023 OpenSSF Scorecard Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +id: codeReviewed +short: Check that there is some review activity for each changeset. +motivation: > + To ensure that the review process works, the proposed changes + should have a minimum number of reviews. +implementation: > + The implementation looks for the reviews of a changeset. +outcome: + - If all changesets have review activity, the probe returns OutcomePositive (1) + - If a changeset has no review activity, the prove returns OutcomeNegative (0) +remediation: + effort: Low + text: + - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. + markdown: + - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. diff --git a/probes/codeReviewed/impl.go b/probes/codeReviewed/impl.go index a2b27b3a4d0..84fb276bb59 100644 --- a/probes/codeReviewed/impl.go +++ b/probes/codeReviewed/impl.go @@ -1,68 +1,68 @@ -// Copyright 2023 OpenSSF Scorecard Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package codeReviewed - -import ( - "embed" - "fmt" - - "github.com/ossf/scorecard/v4/checker" - "github.com/ossf/scorecard/v4/finding" -) - -//go:embed *.yml -var fs embed.FS - -const probe = "codeReviewed" - -func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { - rawReviewData := &raw.CodeReviewResults - return reviewedRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) -} - -/* -** Looks through the data and validates that each changeset has been approved at least once. -*/ - -func reviewedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, - positiveOutcome, negativeOutcome finding.Outcome, -) ([]finding.Finding, string, error) { - var findings []finding.Finding - var numReviews = 0 - changesets := reviewData.DefaultBranchChangesets - var numChangesets = len(changesets) - for x := range changesets { - data := &changesets[x] - if len(data.Reviews) > 0 { - numReviews += 1 - } - } - if numReviews >= numChangesets { - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets have review activity (%v out of %v).", numReviews, numChangesets), - nil, positiveOutcome) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - } else { - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets have review activity. Found %v reviews among %v changesets.", numReviews, numChangesets), - nil, negativeOutcome) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - } - return findings, probeID, nil -} +// Copyright 2023 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package codeReviewed + +import ( + "embed" + "fmt" + + "github.com/ossf/scorecard/v4/checker" + "github.com/ossf/scorecard/v4/finding" +) + +//go:embed *.yml +var fs embed.FS + +const probe = "codeReviewed" + +func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { + rawReviewData := &raw.CodeReviewResults + return reviewedRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) +} + +/* +** Looks through the data and validates that each changeset has been approved at least once. +*/ + +func reviewedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, + positiveOutcome, negativeOutcome finding.Outcome, +) ([]finding.Finding, string, error) { + var findings []finding.Finding + var numReviews = 0 + changesets := reviewData.DefaultBranchChangesets + var numChangesets = len(changesets) + for x := range changesets { + data := &changesets[x] + if len(data.Reviews) > 0 { + numReviews += 1 + } + } + if numReviews >= numChangesets { + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets have review activity (%v out of %v).", numReviews, numChangesets), + nil, positiveOutcome) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + } else { + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets have review activity. Found %v reviews among %v changesets.", numReviews, numChangesets), + nil, negativeOutcome) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + } + return findings, probeID, nil +} From 685bd9ef5baf52f879fbc50f964d653002f6fe38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Tue, 1 Aug 2023 11:27:28 +0300 Subject: [PATCH 101/125] add error handling in case of no changesets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeApproved/impl.go | 6 +- probes/codeReviewTwoReviewers/impl.go | 5 + probes/codeReviewed/impl.go | 140 +++++++++++++------------- probes/utils/codeReview.go | 21 ++++ 4 files changed, 103 insertions(+), 69 deletions(-) create mode 100644 probes/utils/codeReview.go diff --git a/probes/codeApproved/impl.go b/probes/codeApproved/impl.go index 94a48675875..ff6a4a022c0 100644 --- a/probes/codeApproved/impl.go +++ b/probes/codeApproved/impl.go @@ -20,6 +20,7 @@ import ( "github.com/ossf/scorecard/v4/checker" "github.com/ossf/scorecard/v4/finding" + "github.com/ossf/scorecard/v4/probes/utils" ) //go:embed *.yml @@ -34,7 +35,7 @@ func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { /* ** Looks through the data and validates that each changeset has been approved at least once. -*/ + */ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, positiveOutcome, negativeOutcome finding.Outcome, @@ -43,6 +44,9 @@ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string var approvedReviews = 0 changesets := reviewData.DefaultBranchChangesets var numChangesets = len(changesets) + if numChangesets == 0 { + return nil, probeID, utils.NoChangesetsErr + } for x := range changesets { data := &changesets[x] for y := range data.Reviews { diff --git a/probes/codeReviewTwoReviewers/impl.go b/probes/codeReviewTwoReviewers/impl.go index d33ca9d07bb..2e7ef870b36 100644 --- a/probes/codeReviewTwoReviewers/impl.go +++ b/probes/codeReviewTwoReviewers/impl.go @@ -19,6 +19,7 @@ import ( "fmt" "github.com/ossf/scorecard/v4/checker" "github.com/ossf/scorecard/v4/finding" + "github.com/ossf/scorecard/v4/probes/utils" ) //go:embed *.yml @@ -46,6 +47,10 @@ func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri var findings []finding.Finding leastFoundReviewers := 0 changesets := reviewData.DefaultBranchChangesets + var numChangesets = len(changesets) + if numChangesets == 0 { + return nil, probeID, utils.NoChangesetsErr + } for i := range changesets { data := &changesets[i] if data.Author.Login == "" { diff --git a/probes/codeReviewed/impl.go b/probes/codeReviewed/impl.go index 84fb276bb59..571e9e5e79f 100644 --- a/probes/codeReviewed/impl.go +++ b/probes/codeReviewed/impl.go @@ -1,68 +1,72 @@ -// Copyright 2023 OpenSSF Scorecard Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package codeReviewed - -import ( - "embed" - "fmt" - - "github.com/ossf/scorecard/v4/checker" - "github.com/ossf/scorecard/v4/finding" -) - -//go:embed *.yml -var fs embed.FS - -const probe = "codeReviewed" - -func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { - rawReviewData := &raw.CodeReviewResults - return reviewedRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) -} - -/* -** Looks through the data and validates that each changeset has been approved at least once. -*/ - -func reviewedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, - positiveOutcome, negativeOutcome finding.Outcome, -) ([]finding.Finding, string, error) { - var findings []finding.Finding - var numReviews = 0 - changesets := reviewData.DefaultBranchChangesets - var numChangesets = len(changesets) - for x := range changesets { - data := &changesets[x] - if len(data.Reviews) > 0 { - numReviews += 1 - } - } - if numReviews >= numChangesets { - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets have review activity (%v out of %v).", numReviews, numChangesets), - nil, positiveOutcome) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - } else { - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets have review activity. Found %v reviews among %v changesets.", numReviews, numChangesets), - nil, negativeOutcome) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - } - return findings, probeID, nil -} +// Copyright 2023 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package codeReviewed + +import ( + "embed" + "fmt" + + "github.com/ossf/scorecard/v4/checker" + "github.com/ossf/scorecard/v4/finding" + "github.com/ossf/scorecard/v4/probes/utils" +) + +//go:embed *.yml +var fs embed.FS + +const probe = "codeReviewed" + +func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { + rawReviewData := &raw.CodeReviewResults + return reviewedRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) +} + +/* +** Looks through the data and validates that each changeset has been approved at least once. +*/ + +func reviewedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, + positiveOutcome, negativeOutcome finding.Outcome, +) ([]finding.Finding, string, error) { + var findings []finding.Finding + var numReviews = 0 + changesets := reviewData.DefaultBranchChangesets + var numChangesets = len(changesets) + if numChangesets == 0 { + return nil, probeID, utils.NoChangesetsErr + } + for x := range changesets { + data := &changesets[x] + if len(data.Reviews) > 0 { + numReviews += 1 + } + } + if numReviews >= numChangesets { + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets have review activity (%v out of %v).", numReviews, numChangesets), + nil, positiveOutcome) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + } else { + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets have review activity. Found %v reviews among %v changesets.", numReviews, numChangesets), + nil, negativeOutcome) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + } + return findings, probeID, nil +} diff --git a/probes/utils/codeReview.go b/probes/utils/codeReview.go new file mode 100644 index 00000000000..6fd0560349f --- /dev/null +++ b/probes/utils/codeReview.go @@ -0,0 +1,21 @@ +// Copyright 2023 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package utils + +import ( + "fmt" +) + +var NoChangesetsErr = fmt.Errorf("no changesets found") From c640b8d44eb77c1075b40c2d918e2c70f3ae98ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Tue, 1 Aug 2023 14:55:47 +0300 Subject: [PATCH 102/125] completed tests for code-review probes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- checks/code_review_test.go | 214 +++++++++++++++++++++++++++++++++++++ 1 file changed, 214 insertions(+) diff --git a/checks/code_review_test.go b/checks/code_review_test.go index 44c7dfaa6c8..68e221cb09c 100644 --- a/checks/code_review_test.go +++ b/checks/code_review_test.go @@ -16,6 +16,7 @@ package checks import ( "errors" + "fmt" "testing" "time" @@ -24,6 +25,9 @@ import ( "github.com/ossf/scorecard/v4/checker" "github.com/ossf/scorecard/v4/clients" mockrepo "github.com/ossf/scorecard/v4/clients/mockclients" + "github.com/ossf/scorecard/v4/finding" + "github.com/ossf/scorecard/v4/probes" + "github.com/ossf/scorecard/v4/probes/zrunner" scut "github.com/ossf/scorecard/v4/utests" ) @@ -32,6 +36,7 @@ func TestCodereview(t *testing.T) { t.Parallel() //fieldalignment lint issue. Ignoring it as it is not important for this test. //nolint + tests := []struct { err error name string @@ -275,6 +280,195 @@ func TestCodereview(t *testing.T) { }, }, } + probeTests := []struct { + name string + rawResults *checker.RawResults + err error + expectedFindings []finding.Finding + }{ + { + name: "no changesets", + rawResults: &checker.RawResults{ + CodeReviewResults: checker.CodeReviewData{ + DefaultBranchChangesets: []checker.Changeset{}, + }, + }, + err: fmt.Errorf("probe run failure"), + expectedFindings: nil, + }, + { + name: "no reviews", + rawResults: &checker.RawResults{ + CodeReviewResults: checker.CodeReviewData{ + DefaultBranchChangesets: []checker.Changeset{ + { + ReviewPlatform: checker.ReviewPlatformGitHub, + Commits: []clients.Commit{ + {}, + }, + Reviews: []clients.Review{}, + Author: clients.User{Login: "pedro"}, + }, + }, + }, + }, + expectedFindings: []finding.Finding{ + { + Probe: "codeApproved", + Outcome: finding.OutcomeNegative, + }, + { + Probe: "codeReviewed", + Outcome: finding.OutcomeNegative, + }, + { + Probe: "codeReviewTwoReviewers", + Outcome: finding.OutcomeNegative, + }, + }, + }, + { + name: "all authors are bots", + rawResults: &checker.RawResults{ + CodeReviewResults: checker.CodeReviewData{ + DefaultBranchChangesets: []checker.Changeset{ + { + ReviewPlatform: checker.ReviewPlatformGitHub, + Commits: []clients.Commit{ + { + SHA: "sha", + Committer: clients.User{ + Login: "bot", + IsBot: true, + }, + Message: "Title\nPiperOrigin-RevId: 444529962", + }, + }, + Reviews: []clients.Review{}, + Author: clients.User{ + Login: "bot", + IsBot: true, + }, + }, + { + ReviewPlatform: checker.ReviewPlatformGitHub, + Commits: []clients.Commit{ + { + SHA: "sha2", + Committer: clients.User{ + Login: "bot", + IsBot: true, + }, + }, + }, + Reviews: []clients.Review{}, + Author: clients.User{ + Login: "bot", + IsBot: true, + }, + }, + }, + }, + }, + expectedFindings: []finding.Finding{ + { + Probe: "codeApproved", + Outcome: finding.OutcomeNotAvailable, + }, + { + Probe: "codeReviewed", + Outcome: finding.OutcomeNotAvailable, + }, + { + Probe: "codeReviewTwoReviewers", + Outcome: finding.OutcomeNotAvailable, + }, + }, + }, + { + name: "no approvals, reviewed once", + rawResults: &checker.RawResults{ + CodeReviewResults: checker.CodeReviewData{ + DefaultBranchChangesets: []checker.Changeset{ + { + ReviewPlatform: checker.ReviewPlatformGitHub, + Commits: []clients.Commit{ + { + SHA: "sha", + Committer: clients.User{Login: "kratos"}, + Message: "Title\nPiperOrigin-RevId: 444529962", + }, + }, + Reviews: []clients.Review{ + { + Author: &clients.User{Login: "loki"}, + }, + }, + Author: clients.User{Login: "kratos"}, + }, + }, + }, + }, + expectedFindings: []finding.Finding{ + { + Probe: "codeApproved", + Outcome: finding.OutcomeNegative, + }, + { + Probe: "codeReviewed", + Outcome: finding.OutcomePositive, + }, + { + Probe: "codeReviewTwoReviewers", + Outcome: finding.OutcomeNegative, + }, + }, + }, + { + name: "reviewed and approved twice", + rawResults: &checker.RawResults{ + CodeReviewResults: checker.CodeReviewData{ + DefaultBranchChangesets: []checker.Changeset{ + { + ReviewPlatform: checker.ReviewPlatformGitHub, + Commits: []clients.Commit{ + { + SHA: "sha", + Committer: clients.User{Login: "kratos"}, + Message: "Title\nPiperOrigin-RevId: 444529962", + }, + }, + Reviews: []clients.Review{ + { + Author: &clients.User{Login: "loki"}, + State: "APPROVED", + }, + { + Author: &clients.User{Login: "baldur"}, + State: "APPROVED", + }, + }, + Author: clients.User{Login: "kratos"}, + }, + }, + }, + }, + expectedFindings: []finding.Finding{ + { + Probe: "codeApproved", + Outcome: finding.OutcomePositive, + }, + { + Probe: "codeReviewed", + Outcome: finding.OutcomePositive, + }, + { + Probe: "codeReviewTwoReviewers", + Outcome: finding.OutcomePositive, + }, + }, + }, + } for _, tt := range tests { tt := tt // Re-initializing variable so it is not changed while executing the closure below @@ -304,4 +498,24 @@ func TestCodereview(t *testing.T) { ctrl.Finish() }) } + for _, tt := range probeTests { + tt := tt + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + res, err := zrunner.Run(tt.rawResults, probes.CodeReview) + if err != nil && tt.err == nil { + t.Errorf("Uxpected error %v", err) + } else if tt.err != nil && err == nil { + t.Errorf("Expected error %v, got nil", tt.err) + } else if res == nil && err == nil { + t.Errorf("Probe(s) returned nil for both finding and error") + } else { + for i := range tt.expectedFindings { + if tt.expectedFindings[i].Outcome != res[i].Outcome { + t.Errorf("Code-review probe: %v error: test name: \"%v\", wanted outcome %v, got %v", res[i].Probe, tt.name, tt.expectedFindings[i].Outcome, res[i].Outcome) + } + } + } + }) + } } From da497f28d2ee006cec5a21ef7613936ebb41af63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Tue, 1 Aug 2023 15:33:45 +0300 Subject: [PATCH 103/125] update codeReview probes and utils MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeApproved/impl.go | 20 +++++- probes/codeReviewTwoReviewers/impl.go | 89 +++++++++++++++------------ probes/codeReviewed/impl.go | 22 +++++-- probes/utils/codeReview.go | 6 +- 4 files changed, 85 insertions(+), 52 deletions(-) diff --git a/probes/codeApproved/impl.go b/probes/codeApproved/impl.go index ff6a4a022c0..903fb54c3aa 100644 --- a/probes/codeApproved/impl.go +++ b/probes/codeApproved/impl.go @@ -40,15 +40,19 @@ func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, positiveOutcome, negativeOutcome finding.Outcome, ) ([]finding.Finding, string, error) { + changesets := reviewData.DefaultBranchChangesets var findings []finding.Finding var approvedReviews = 0 - changesets := reviewData.DefaultBranchChangesets + var numBotAuthors = 0 var numChangesets = len(changesets) if numChangesets == 0 { - return nil, probeID, utils.NoChangesetsErr + return nil, probeID, fmt.Errorf("%w", utils.NoChangesetsErr) } for x := range changesets { data := &changesets[x] + if data.Author.IsBot == true { + numBotAuthors += 1 + } for y := range data.Reviews { if data.Reviews[y].State == "APPROVED" && data.Reviews[y].Author.Login != data.Author.Login { approvedReviews += 1 @@ -56,7 +60,16 @@ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string } } } - if approvedReviews >= numChangesets { + if numBotAuthors == numChangesets { + // returns a NotAvailable outcome if all changesets were authored by bots + f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprintf("All changesets authored by bot(s)."), nil) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + return findings, probeID, nil + } else if approvedReviews >= numChangesets { + // returns PositiveOutcome if all changesets have been approved f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets approved (%v out of %v).", approvedReviews, numChangesets), nil, positiveOutcome) if err != nil { @@ -64,6 +77,7 @@ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string } findings = append(findings, *f) } else { + // returns NegativeOutcome if not all changesets were approved f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets approved. Found %v approvals among %v changesets.", approvedReviews, numChangesets), nil, negativeOutcome) if err != nil { diff --git a/probes/codeReviewTwoReviewers/impl.go b/probes/codeReviewTwoReviewers/impl.go index 2e7ef870b36..aaf512b580c 100644 --- a/probes/codeReviewTwoReviewers/impl.go +++ b/probes/codeReviewTwoReviewers/impl.go @@ -17,7 +17,9 @@ package codeReviewTwoReviewers import ( "embed" "fmt" + "github.com/ossf/scorecard/v4/checker" + "github.com/ossf/scorecard/v4/clients" "github.com/ossf/scorecard/v4/finding" "github.com/ossf/scorecard/v4/probes/utils" ) @@ -44,30 +46,50 @@ func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, positiveOutcome, negativeOutcome finding.Outcome, ) ([]finding.Finding, string, error) { - var findings []finding.Finding - leastFoundReviewers := 0 changesets := reviewData.DefaultBranchChangesets + var findings []finding.Finding + var leastFoundReviewers = 0 var numChangesets = len(changesets) + var numBotAuthors = 0 if numChangesets == 0 { - return nil, probeID, utils.NoChangesetsErr + return nil, probeID, fmt.Errorf("%w", utils.NoChangesetsErr) } + // Loops through all changesets, if an author login cannot be retrieved: returns OutcomeNotAvailabe. + // leastFoundReviewers will be the lowest number of unique reviewers found among the changesets. for i := range changesets { data := &changesets[i] if data.Author.Login == "" { - return authorNotFound(findings, probeID, fs) - } - reviewersList := make([]string, len(data.Reviews)) - for i := range data.Reviews { - reviewersList[i] = data.Reviews[i].Author.Login + f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprintf("Could not retrieve the author of a changeset."), nil) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + return findings, probeID, nil + } else if data.Author.IsBot == true { + numBotAuthors += 1 } - numReviewers := uniqueReviewers(data.Author.Login, reviewersList) - if numReviewers == noReviewerFound { - return reviewerNotFound(findings, probeID, fs) + numReviewers, err := uniqueReviewers(data.Author.Login, data.Reviews) + if err != nil { + f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprintf("Could not retrieve the reviewer of a changeset."), nil) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + return findings, probeID, nil } else if i == 0 || numReviewers < leastFoundReviewers { leastFoundReviewers = numReviewers } } - if leastFoundReviewers >= minimumReviewers { + if numBotAuthors == numChangesets { + // returns a NotAvailable outcome if all changesets were authored by bots + f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprintf("All changesets authored by bot(s)."), nil) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + return findings, probeID, nil + } else if leastFoundReviewers >= minimumReviewers { + // returns PositiveOutcome if the lowest number of unique reviewers is at least as high as minimumReviewers (2). f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewers found for at least one changeset, %v wanted.", leastFoundReviewers, minimumReviewers), nil, positiveOutcome) if err != nil { @@ -75,6 +97,7 @@ func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri } findings = append(findings, *f) } else { + // returns NegativeOutcome if even a single changeset was reviewed by fewer than minimumReviewers (2). f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewer(s) found for at least one changeset, %v wanted.", leastFoundReviewers, minimumReviewers), nil, negativeOutcome) if err != nil { @@ -85,41 +108,27 @@ func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri return findings, probeID, nil } -func uniqueReviewers(authorLogin string, reviewers []string) int { +// Loops through the reviews of a changeset, counting how many unique user logins are present. +// Reviews performed by the author don't count, and an error is returned if a reviewer login can't be retrieved. +func uniqueReviewers(authorLogin string, reviews []clients.Review) (int, error) { + reviewersList := make([]string, len(reviews)) + for i := range reviewersList { + reviewersList[i] = reviews[i].Author.Login + } uniqueReviewers := 0 - for i := range reviewers { + for i := range reviewersList { duplicateCount := 0 - if (reviewers[i] == "") { - return -1 + if reviewersList[i] == "" { + return uniqueReviewers, fmt.Errorf("could not find the login of a reviewer") } - for j := range reviewers { - if reviewers[j] == reviewers[i] && j > i { + for j := range reviewersList { + if reviewersList[j] == reviewersList[i] && j > i { duplicateCount++ } } - if reviewers[i] != authorLogin && duplicateCount == 0 { + if reviewersList[i] != authorLogin && duplicateCount == 0 { uniqueReviewers++ } } - return uniqueReviewers -} - -func authorNotFound(findings []finding.Finding, probeID string, - fs embed.FS) ([]finding.Finding, string, error) { - f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprintf("Could not retrieve the author of a changeset."), nil) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - return findings, probeID, nil -} - -func reviewerNotFound(findings []finding.Finding, probeID string, - fs embed.FS) ([]finding.Finding, string, error) { - f, err := finding.NewNegative(fs, probeID, fmt.Sprintf("Could not retrieve reviewers of a changeset."), nil) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - return findings, probeID, nil + return uniqueReviewers, nil } diff --git a/probes/codeReviewed/impl.go b/probes/codeReviewed/impl.go index 571e9e5e79f..06f8e860997 100644 --- a/probes/codeReviewed/impl.go +++ b/probes/codeReviewed/impl.go @@ -35,25 +35,38 @@ func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { /* ** Looks through the data and validates that each changeset has been approved at least once. -*/ + */ func reviewedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, positiveOutcome, negativeOutcome finding.Outcome, ) ([]finding.Finding, string, error) { + changesets := reviewData.DefaultBranchChangesets var findings []finding.Finding var numReviews = 0 - changesets := reviewData.DefaultBranchChangesets + var numBotAuthors = 0 var numChangesets = len(changesets) if numChangesets == 0 { - return nil, probeID, utils.NoChangesetsErr + return nil, probeID, fmt.Errorf("%w", utils.NoChangesetsErr) } for x := range changesets { data := &changesets[x] + if data.Author.IsBot == true { + numBotAuthors += 1 + } if len(data.Reviews) > 0 { numReviews += 1 } } - if numReviews >= numChangesets { + if numBotAuthors == numChangesets { + // returns a NotAvailable outcome if all changesets were authored by bots + f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprintf("All changesets authored by bot(s)."), nil) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + return findings, probeID, nil + } else if numReviews >= numChangesets { + // returns PositiveOutcome if all changesets had review activity f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets have review activity (%v out of %v).", numReviews, numChangesets), nil, positiveOutcome) if err != nil { @@ -61,6 +74,7 @@ func reviewedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string } findings = append(findings, *f) } else { + // returns NegativeOutcome if some changesets did not have review activity f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets have review activity. Found %v reviews among %v changesets.", numReviews, numChangesets), nil, negativeOutcome) if err != nil { diff --git a/probes/utils/codeReview.go b/probes/utils/codeReview.go index 6fd0560349f..beebbce4971 100644 --- a/probes/utils/codeReview.go +++ b/probes/utils/codeReview.go @@ -14,8 +14,4 @@ package utils -import ( - "fmt" -) - -var NoChangesetsErr = fmt.Errorf("no changesets found") +var NoChangesetsErr = "no changesets found" From 1bda8a180cc1162cf6570d8e2edf2e39485174a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Tue, 1 Aug 2023 16:33:11 +0300 Subject: [PATCH 104/125] fixed some lint errors, check for more MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- checks/code_review_test.go | 3 +- probes/codeApproved/impl.go | 7 +- probes/codeReviewTwoReviewers/impl.go | 12 +- probes/codeReviewed/impl.go | 173 +++++++++++++------------- probes/utils/codeReview.go | 4 +- 5 files changed, 102 insertions(+), 97 deletions(-) diff --git a/checks/code_review_test.go b/checks/code_review_test.go index 68e221cb09c..83ba192af99 100644 --- a/checks/code_review_test.go +++ b/checks/code_review_test.go @@ -31,6 +31,7 @@ import ( scut "github.com/ossf/scorecard/v4/utests" ) +var probeReturnedError = errors.New("probe run failure") // TestCodeReview tests the code review checker. func TestCodereview(t *testing.T) { t.Parallel() @@ -293,7 +294,7 @@ func TestCodereview(t *testing.T) { DefaultBranchChangesets: []checker.Changeset{}, }, }, - err: fmt.Errorf("probe run failure"), + err: probeReturnedError, expectedFindings: nil, }, { diff --git a/probes/codeApproved/impl.go b/probes/codeApproved/impl.go index 903fb54c3aa..4ef5adf7e2a 100644 --- a/probes/codeApproved/impl.go +++ b/probes/codeApproved/impl.go @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +// nolint:stylecheck package codeApproved import ( @@ -46,11 +47,11 @@ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string var numBotAuthors = 0 var numChangesets = len(changesets) if numChangesets == 0 { - return nil, probeID, fmt.Errorf("%w", utils.NoChangesetsErr) + return nil, probeID, utils.NoChangesetsErr } for x := range changesets { data := &changesets[x] - if data.Author.IsBot == true { + if data.Author.IsBot { numBotAuthors += 1 } for y := range data.Reviews { @@ -62,7 +63,7 @@ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string } if numBotAuthors == numChangesets { // returns a NotAvailable outcome if all changesets were authored by bots - f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprintf("All changesets authored by bot(s)."), nil) + f, err := finding.NewNotAvailable(fs, probeID, "All changesets authored by bot(s).", nil) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } diff --git a/probes/codeReviewTwoReviewers/impl.go b/probes/codeReviewTwoReviewers/impl.go index aaf512b580c..6cb182d69e0 100644 --- a/probes/codeReviewTwoReviewers/impl.go +++ b/probes/codeReviewTwoReviewers/impl.go @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +// nolint:stylecheck package codeReviewTwoReviewers import ( @@ -29,7 +30,6 @@ var fs embed.FS const probe = "codeReviewTwoReviewers" const minimumReviewers = 2 -const noReviewerFound = -1 func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { rawReviewData := &raw.CodeReviewResults @@ -52,25 +52,25 @@ func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri var numChangesets = len(changesets) var numBotAuthors = 0 if numChangesets == 0 { - return nil, probeID, fmt.Errorf("%w", utils.NoChangesetsErr) + return nil, probeID, utils.NoChangesetsErr } // Loops through all changesets, if an author login cannot be retrieved: returns OutcomeNotAvailabe. // leastFoundReviewers will be the lowest number of unique reviewers found among the changesets. for i := range changesets { data := &changesets[i] if data.Author.Login == "" { - f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprintf("Could not retrieve the author of a changeset."), nil) + f, err := finding.NewNotAvailable(fs, probeID, "Could not retrieve the author of a changeset.", nil) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } findings = append(findings, *f) return findings, probeID, nil - } else if data.Author.IsBot == true { + } else if data.Author.IsBot { numBotAuthors += 1 } numReviewers, err := uniqueReviewers(data.Author.Login, data.Reviews) if err != nil { - f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprintf("Could not retrieve the reviewer of a changeset."), nil) + f, err := finding.NewNotAvailable(fs, probeID, "Could not retrieve the reviewer of a changeset.", nil) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } @@ -82,7 +82,7 @@ func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri } if numBotAuthors == numChangesets { // returns a NotAvailable outcome if all changesets were authored by bots - f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprintf("All changesets authored by bot(s)."), nil) + f, err := finding.NewNotAvailable(fs, probeID, "All changesets authored by bot(s).", nil) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } diff --git a/probes/codeReviewed/impl.go b/probes/codeReviewed/impl.go index 06f8e860997..ccd1f556cba 100644 --- a/probes/codeReviewed/impl.go +++ b/probes/codeReviewed/impl.go @@ -1,86 +1,87 @@ -// Copyright 2023 OpenSSF Scorecard Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package codeReviewed - -import ( - "embed" - "fmt" - - "github.com/ossf/scorecard/v4/checker" - "github.com/ossf/scorecard/v4/finding" - "github.com/ossf/scorecard/v4/probes/utils" -) - -//go:embed *.yml -var fs embed.FS - -const probe = "codeReviewed" - -func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { - rawReviewData := &raw.CodeReviewResults - return reviewedRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) -} - -/* -** Looks through the data and validates that each changeset has been approved at least once. - */ - -func reviewedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, - positiveOutcome, negativeOutcome finding.Outcome, -) ([]finding.Finding, string, error) { - changesets := reviewData.DefaultBranchChangesets - var findings []finding.Finding - var numReviews = 0 - var numBotAuthors = 0 - var numChangesets = len(changesets) - if numChangesets == 0 { - return nil, probeID, fmt.Errorf("%w", utils.NoChangesetsErr) - } - for x := range changesets { - data := &changesets[x] - if data.Author.IsBot == true { - numBotAuthors += 1 - } - if len(data.Reviews) > 0 { - numReviews += 1 - } - } - if numBotAuthors == numChangesets { - // returns a NotAvailable outcome if all changesets were authored by bots - f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprintf("All changesets authored by bot(s)."), nil) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - return findings, probeID, nil - } else if numReviews >= numChangesets { - // returns PositiveOutcome if all changesets had review activity - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets have review activity (%v out of %v).", numReviews, numChangesets), - nil, positiveOutcome) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - } else { - // returns NegativeOutcome if some changesets did not have review activity - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets have review activity. Found %v reviews among %v changesets.", numReviews, numChangesets), - nil, negativeOutcome) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - } - return findings, probeID, nil -} +// Copyright 2023 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// nolint:stylecheck +package codeReviewed + +import ( + "embed" + "fmt" + + "github.com/ossf/scorecard/v4/checker" + "github.com/ossf/scorecard/v4/finding" + "github.com/ossf/scorecard/v4/probes/utils" +) + +//go:embed *.yml +var fs embed.FS + +const probe = "codeReviewed" + +func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { + rawReviewData := &raw.CodeReviewResults + return reviewedRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) +} + +/* +** Looks through the data and validates that each changeset has been approved at least once. + */ + +func reviewedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, + positiveOutcome, negativeOutcome finding.Outcome, +) ([]finding.Finding, string, error) { + changesets := reviewData.DefaultBranchChangesets + var findings []finding.Finding + var numReviews = 0 + var numBotAuthors = 0 + var numChangesets = len(changesets) + if numChangesets == 0 { + return nil, probeID, utils.NoChangesetsErr + } + for x := range changesets { + data := &changesets[x] + if data.Author.IsBot { + numBotAuthors += 1 + } + if len(data.Reviews) > 0 { + numReviews += 1 + } + } + if numBotAuthors == numChangesets { + // returns a NotAvailable outcome if all changesets were authored by bots + f, err := finding.NewNotAvailable(fs, probeID, "All changesets authored by bot(s).", nil) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + return findings, probeID, nil + } else if numReviews >= numChangesets { + // returns PositiveOutcome if all changesets had review activity + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets have review activity (%v out of %v).", numReviews, numChangesets), + nil, positiveOutcome) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + } else { + // returns NegativeOutcome if some changesets did not have review activity + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets have review activity. Found %v reviews among %v changesets.", numReviews, numChangesets), + nil, negativeOutcome) + if err != nil { + return nil, probeID, fmt.Errorf("create finding: %w", err) + } + findings = append(findings, *f) + } + return findings, probeID, nil +} diff --git a/probes/utils/codeReview.go b/probes/utils/codeReview.go index beebbce4971..59fc4add5ca 100644 --- a/probes/utils/codeReview.go +++ b/probes/utils/codeReview.go @@ -14,4 +14,6 @@ package utils -var NoChangesetsErr = "no changesets found" +import "fmt" + +var NoChangesetsErr = fmt.Errorf("no changesets found") From e7172e374a7a54039ffff0ca82654d553cb9711c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Wed, 2 Aug 2023 13:16:17 +0300 Subject: [PATCH 105/125] fixed lint issues MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- checks/code_review_test.go | 5 +++-- probes/codeApproved/impl.go | 16 ++++++++-------- probes/codeReviewTwoReviewers/impl.go | 19 ++++++++++--------- probes/codeReviewed/impl.go | 16 ++++++++-------- probes/entries.go | 1 + 5 files changed, 30 insertions(+), 27 deletions(-) diff --git a/checks/code_review_test.go b/checks/code_review_test.go index 83ba192af99..de627ad30e7 100644 --- a/checks/code_review_test.go +++ b/checks/code_review_test.go @@ -12,11 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. +//nolint package checks import ( "errors" - "fmt" "testing" "time" @@ -513,7 +513,8 @@ func TestCodereview(t *testing.T) { } else { for i := range tt.expectedFindings { if tt.expectedFindings[i].Outcome != res[i].Outcome { - t.Errorf("Code-review probe: %v error: test name: \"%v\", wanted outcome %v, got %v", res[i].Probe, tt.name, tt.expectedFindings[i].Outcome, res[i].Outcome) + t.Errorf("Code-review probe: %v error: test name: \"%v\", wanted outcome %v, got %v", + res[i].Probe, tt.name, tt.expectedFindings[i].Outcome, res[i].Outcome) } } } diff --git a/probes/codeApproved/impl.go b/probes/codeApproved/impl.go index 4ef5adf7e2a..aff126c0ef1 100644 --- a/probes/codeApproved/impl.go +++ b/probes/codeApproved/impl.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -// nolint:stylecheck +// nolint package codeApproved import ( @@ -43,9 +43,9 @@ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string ) ([]finding.Finding, string, error) { changesets := reviewData.DefaultBranchChangesets var findings []finding.Finding - var approvedReviews = 0 - var numBotAuthors = 0 - var numChangesets = len(changesets) + approvedReviews := 0 + numBotAuthors := 0 + numChangesets := len(changesets) if numChangesets == 0 { return nil, probeID, utils.NoChangesetsErr } @@ -71,16 +71,16 @@ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string return findings, probeID, nil } else if approvedReviews >= numChangesets { // returns PositiveOutcome if all changesets have been approved - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets approved (%v out of %v).", approvedReviews, numChangesets), - nil, positiveOutcome) + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets approved (%v out of %v).", + approvedReviews, numChangesets), nil, positiveOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } findings = append(findings, *f) } else { // returns NegativeOutcome if not all changesets were approved - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets approved. Found %v approvals among %v changesets.", approvedReviews, numChangesets), - nil, negativeOutcome) + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets approved. " + + "Found %v approvals among %v changesets.", approvedReviews, numChangesets), nil, negativeOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } diff --git a/probes/codeReviewTwoReviewers/impl.go b/probes/codeReviewTwoReviewers/impl.go index 6cb182d69e0..fbe822e5854 100644 --- a/probes/codeReviewTwoReviewers/impl.go +++ b/probes/codeReviewTwoReviewers/impl.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -// nolint:stylecheck +// nolint package codeReviewTwoReviewers import ( @@ -30,6 +30,7 @@ var fs embed.FS const probe = "codeReviewTwoReviewers" const minimumReviewers = 2 +var reviewerLoginErr = fmt.Errorf("could not find the login of a reviewer") func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { rawReviewData := &raw.CodeReviewResults @@ -48,9 +49,9 @@ func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri ) ([]finding.Finding, string, error) { changesets := reviewData.DefaultBranchChangesets var findings []finding.Finding - var leastFoundReviewers = 0 - var numChangesets = len(changesets) - var numBotAuthors = 0 + leastFoundReviewers := 0 + numChangesets := len(changesets) + numBotAuthors := 0 if numChangesets == 0 { return nil, probeID, utils.NoChangesetsErr } @@ -90,16 +91,16 @@ func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri return findings, probeID, nil } else if leastFoundReviewers >= minimumReviewers { // returns PositiveOutcome if the lowest number of unique reviewers is at least as high as minimumReviewers (2). - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewers found for at least one changeset, %v wanted.", leastFoundReviewers, minimumReviewers), - nil, positiveOutcome) + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewers found for at least one " + + "changeset, %v wanted.", leastFoundReviewers, minimumReviewers), nil, positiveOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } findings = append(findings, *f) } else { // returns NegativeOutcome if even a single changeset was reviewed by fewer than minimumReviewers (2). - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewer(s) found for at least one changeset, %v wanted.", leastFoundReviewers, minimumReviewers), - nil, negativeOutcome) + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewer(s) found for at least one " + + "changeset, %v wanted.", leastFoundReviewers, minimumReviewers), nil, negativeOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } @@ -119,7 +120,7 @@ func uniqueReviewers(authorLogin string, reviews []clients.Review) (int, error) for i := range reviewersList { duplicateCount := 0 if reviewersList[i] == "" { - return uniqueReviewers, fmt.Errorf("could not find the login of a reviewer") + return uniqueReviewers, reviewerLoginErr } for j := range reviewersList { if reviewersList[j] == reviewersList[i] && j > i { diff --git a/probes/codeReviewed/impl.go b/probes/codeReviewed/impl.go index ccd1f556cba..35e7293287b 100644 --- a/probes/codeReviewed/impl.go +++ b/probes/codeReviewed/impl.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -// nolint:stylecheck +// nolint package codeReviewed import ( @@ -43,9 +43,9 @@ func reviewedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string ) ([]finding.Finding, string, error) { changesets := reviewData.DefaultBranchChangesets var findings []finding.Finding - var numReviews = 0 - var numBotAuthors = 0 - var numChangesets = len(changesets) + numReviews := 0 + numBotAuthors := 0 + numChangesets := len(changesets) if numChangesets == 0 { return nil, probeID, utils.NoChangesetsErr } @@ -68,16 +68,16 @@ func reviewedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string return findings, probeID, nil } else if numReviews >= numChangesets { // returns PositiveOutcome if all changesets had review activity - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets have review activity (%v out of %v).", numReviews, numChangesets), - nil, positiveOutcome) + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets have review activity " + + "(%v out of %v).", numReviews, numChangesets), nil, positiveOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } findings = append(findings, *f) } else { // returns NegativeOutcome if some changesets did not have review activity - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets have review activity. Found %v reviews among %v changesets.", numReviews, numChangesets), - nil, negativeOutcome) + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets have review activity. " + + "Found %v reviews among %v changesets.", numReviews, numChangesets), nil, negativeOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } diff --git a/probes/entries.go b/probes/entries.go index c9058767e5e..e4625038464 100644 --- a/probes/entries.go +++ b/probes/entries.go @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +//nolint // to prevent linter errors because of package names being camel case package probes import ( From ba6b5eedfacf59b9de5f39cc933e00c3f4ec0426 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Wed, 2 Aug 2023 13:25:31 +0300 Subject: [PATCH 106/125] fix lint errors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/utils/codeReview.go | 1 + 1 file changed, 1 insertion(+) diff --git a/probes/utils/codeReview.go b/probes/utils/codeReview.go index 59fc4add5ca..c0e90c76f02 100644 --- a/probes/utils/codeReview.go +++ b/probes/utils/codeReview.go @@ -16,4 +16,5 @@ package utils import "fmt" +// nolint:stylecheck var NoChangesetsErr = fmt.Errorf("no changesets found") From 9ec38ca34a67ceadf8383aa79fd4017278054db3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Wed, 2 Aug 2023 14:08:05 +0300 Subject: [PATCH 107/125] add test for multiple reviews with only one unique reviewer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- checks/code_review_test.go | 67 ++++++++++++++++++++++++++++++++++---- 1 file changed, 60 insertions(+), 7 deletions(-) diff --git a/checks/code_review_test.go b/checks/code_review_test.go index de627ad30e7..a1ab579eaf4 100644 --- a/checks/code_review_test.go +++ b/checks/code_review_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -//nolint +// nolint package checks import ( @@ -32,6 +32,7 @@ import ( ) var probeReturnedError = errors.New("probe run failure") + // TestCodeReview tests the code review checker. func TestCodereview(t *testing.T) { t.Parallel() @@ -337,16 +338,16 @@ func TestCodereview(t *testing.T) { ReviewPlatform: checker.ReviewPlatformGitHub, Commits: []clients.Commit{ { - SHA: "sha", + SHA: "sha", Committer: clients.User{ Login: "bot", IsBot: true, }, - Message: "Title\nPiperOrigin-RevId: 444529962", + Message: "Title\nPiperOrigin-RevId: 444529962", }, }, Reviews: []clients.Review{}, - Author: clients.User{ + Author: clients.User{ Login: "bot", IsBot: true, }, @@ -355,7 +356,7 @@ func TestCodereview(t *testing.T) { ReviewPlatform: checker.ReviewPlatformGitHub, Commits: []clients.Commit{ { - SHA: "sha2", + SHA: "sha2", Committer: clients.User{ Login: "bot", IsBot: true, @@ -363,7 +364,7 @@ func TestCodereview(t *testing.T) { }, }, Reviews: []clients.Review{}, - Author: clients.User{ + Author: clients.User{ Login: "bot", IsBot: true, }, @@ -425,6 +426,58 @@ func TestCodereview(t *testing.T) { }, }, }, + { + name: "four reviewers, only one unique", + rawResults: &checker.RawResults{ + CodeReviewResults: checker.CodeReviewData{ + DefaultBranchChangesets: []checker.Changeset{ + { + ReviewPlatform: checker.ReviewPlatformGitHub, + Commits: []clients.Commit{ + { + SHA: "sha", + Committer: clients.User{Login: "kratos"}, + Message: "Title\nPiperOrigin-RevId: 444529962", + }, + }, + Reviews: []clients.Review{ + { + Author: &clients.User{Login: "loki"}, + State: "APPROVED", + }, + { + Author: &clients.User{Login: "loki"}, + State: "APPROVED", + }, + { + Author: &clients.User{Login: "kratos"}, + State: "APPROVED", + }, + { + Author: &clients.User{Login: "kratos"}, + State: "APPROVED", + }, + }, + Author: clients.User{Login: "kratos"}, + }, + }, + }, + }, + expectedFindings: []finding.Finding{ + { + Probe: "codeApproved", + Outcome: finding.OutcomePositive, + }, + { + Probe: "codeReviewed", + Outcome: finding.OutcomePositive, + }, + { + Probe: "codeReviewTwoReviewers", + Outcome: finding.OutcomeNegative, + }, + }, + }, { name: "reviewed and approved twice", rawResults: &checker.RawResults{ @@ -514,7 +567,7 @@ func TestCodereview(t *testing.T) { for i := range tt.expectedFindings { if tt.expectedFindings[i].Outcome != res[i].Outcome { t.Errorf("Code-review probe: %v error: test name: \"%v\", wanted outcome %v, got %v", - res[i].Probe, tt.name, tt.expectedFindings[i].Outcome, res[i].Outcome) + res[i].Probe, tt.name, tt.expectedFindings[i].Outcome, res[i].Outcome) } } } From f561ea2fb6a22907f8087655c310e740aa11d29c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Wed, 2 Aug 2023 14:08:58 +0300 Subject: [PATCH 108/125] simplify func uniqueReviewers, use map[string]bool MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeReviewTwoReviewers/impl.go | 29 +++++++++------------------ 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/probes/codeReviewTwoReviewers/impl.go b/probes/codeReviewTwoReviewers/impl.go index fbe822e5854..d200b8418c7 100644 --- a/probes/codeReviewTwoReviewers/impl.go +++ b/probes/codeReviewTwoReviewers/impl.go @@ -109,27 +109,18 @@ func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri return findings, probeID, nil } -// Loops through the reviews of a changeset, counting how many unique user logins are present. +// Loops through the reviews of a changeset, returning the number or unique user logins are present. // Reviews performed by the author don't count, and an error is returned if a reviewer login can't be retrieved. -func uniqueReviewers(authorLogin string, reviews []clients.Review) (int, error) { - reviewersList := make([]string, len(reviews)) - for i := range reviewersList { - reviewersList[i] = reviews[i].Author.Login - } - uniqueReviewers := 0 - for i := range reviewersList { - duplicateCount := 0 - if reviewersList[i] == "" { - return uniqueReviewers, reviewerLoginErr - } - for j := range reviewersList { - if reviewersList[j] == reviewersList[i] && j > i { - duplicateCount++ - } +func uniqueReviewers(changesetAuthor string, reviews []clients.Review) (int, error) { + reviewersList := make(map[string]bool) + for i := range reviews { + if reviews[i].Author.Login == "" { + return 0, reviewerLoginErr } - if reviewersList[i] != authorLogin && duplicateCount == 0 { - uniqueReviewers++ + if !reviewersList[reviews[i].Author.Login] && reviews[i].Author.Login != changesetAuthor { + reviewersList[reviews[i].Author.Login] = true } } - return uniqueReviewers, nil + return len(reviewersList), nil } + From 1e944ddb0ba98862ea309fd0770a409ddc93696b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Wed, 2 Aug 2023 14:22:48 +0300 Subject: [PATCH 109/125] fix linting error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeReviewTwoReviewers/impl.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/probes/codeReviewTwoReviewers/impl.go b/probes/codeReviewTwoReviewers/impl.go index d200b8418c7..d28c7ac2a45 100644 --- a/probes/codeReviewTwoReviewers/impl.go +++ b/probes/codeReviewTwoReviewers/impl.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -// nolint +//nolint package codeReviewTwoReviewers import ( @@ -123,4 +123,3 @@ func uniqueReviewers(changesetAuthor string, reviews []clients.Review) (int, err } return len(reviewersList), nil } - From b2f83949d8a68bb638be5f55ed9fdffa4e72e78d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Thu, 3 Aug 2023 10:39:30 +0300 Subject: [PATCH 110/125] moved probe tests to their own function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- checks/code_review_test.go | 94 +++++++++++++++++++++----------------- 1 file changed, 51 insertions(+), 43 deletions(-) diff --git a/checks/code_review_test.go b/checks/code_review_test.go index a1ab579eaf4..b3e685373f8 100644 --- a/checks/code_review_test.go +++ b/checks/code_review_test.go @@ -12,26 +12,27 @@ // See the License for the specific language governing permissions and // limitations under the License. -// nolint package checks import ( "errors" "testing" "time" - + "github.com/golang/mock/gomock" - "github.com/ossf/scorecard/v4/checker" "github.com/ossf/scorecard/v4/clients" - mockrepo "github.com/ossf/scorecard/v4/clients/mockclients" "github.com/ossf/scorecard/v4/finding" "github.com/ossf/scorecard/v4/probes" "github.com/ossf/scorecard/v4/probes/zrunner" + mockrepo "github.com/ossf/scorecard/v4/clients/mockclients" scut "github.com/ossf/scorecard/v4/utests" ) -var probeReturnedError = errors.New("probe run failure") +var ( + errNew = errors.New("error") + errProbeReturned = errors.New("probe run failure") +) // TestCodeReview tests the code review checker. func TestCodereview(t *testing.T) { @@ -54,22 +55,22 @@ func TestCodereview(t *testing.T) { }, { name: "no commits with error", - commiterr: errors.New("error"), + commiterr: errNew, expected: checker.CheckResult{ Score: -1, }, }, { name: "no PR's with error", - err: errors.New("error"), + err: errNew, expected: checker.CheckResult{ Score: -1, }, }, { name: "no PR's with error as well as commits", - err: errors.New("error"), - commiterr: errors.New("error"), + err: errNew, + commiterr: errNew, expected: checker.CheckResult{ Score: -1, }, @@ -282,6 +283,40 @@ func TestCodereview(t *testing.T) { }, }, } + + for _, tt := range tests { + tt := tt // Re-initializing variable so it is not changed while executing the closure below. + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + ctrl := gomock.NewController(t) + mockRepo := mockrepo.NewMockRepoClient(ctrl) + mockRepo.EXPECT().ListCommits().Return(tt.commits, tt.err).AnyTimes() + + req := checker.CheckRequest{ + RepoClient: mockRepo, + } + req.Dlogger = &scut.TestDetailLogger{} + res := CodeReview(&req) + + if tt.err != nil { + if res.Error == nil { + t.Errorf("Expected error %v, got nil", tt.err) + } + // return as we don't need to check the rest of the fields. + return + } + + if res.Score != tt.expected.Score { + t.Errorf("Expected score %d, got %d for %v", tt.expected.Score, res.Score, tt.name) + } + ctrl.Finish() + }) + } +} + +// TestProbesCodereview tests the probes associated with the Code-Review check. +func TestProbesCodereview(t *testing.T) { + t.Parallel() probeTests := []struct { name string rawResults *checker.RawResults @@ -295,7 +330,7 @@ func TestCodereview(t *testing.T) { DefaultBranchChangesets: []checker.Changeset{}, }, }, - err: probeReturnedError, + err: errProbeReturned, expectedFindings: nil, }, { @@ -524,46 +559,19 @@ func TestCodereview(t *testing.T) { }, } - for _, tt := range tests { - tt := tt // Re-initializing variable so it is not changed while executing the closure below - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - ctrl := gomock.NewController(t) - mockRepo := mockrepo.NewMockRepoClient(ctrl) - mockRepo.EXPECT().ListCommits().Return(tt.commits, tt.err).AnyTimes() - - req := checker.CheckRequest{ - RepoClient: mockRepo, - } - req.Dlogger = &scut.TestDetailLogger{} - res := CodeReview(&req) - - if tt.err != nil { - if res.Error == nil { - t.Errorf("Expected error %v, got nil", tt.err) - } - // return as we don't need to check the rest of the fields. - return - } - - if res.Score != tt.expected.Score { - t.Errorf("Expected score %d, got %d for %v", tt.expected.Score, res.Score, tt.name) - } - ctrl.Finish() - }) - } for _, tt := range probeTests { - tt := tt + tt := tt // Re-initializing variable so it is not changed while executing the closure below. t.Run(tt.name, func(t *testing.T) { t.Parallel() res, err := zrunner.Run(tt.rawResults, probes.CodeReview) - if err != nil && tt.err == nil { + switch { + case err != nil && tt.err == nil: t.Errorf("Uxpected error %v", err) - } else if tt.err != nil && err == nil { + case tt.err != nil && err == nil: t.Errorf("Expected error %v, got nil", tt.err) - } else if res == nil && err == nil { + case res == nil && err == nil: t.Errorf("Probe(s) returned nil for both finding and error") - } else { + default: for i := range tt.expectedFindings { if tt.expectedFindings[i].Outcome != res[i].Outcome { t.Errorf("Code-review probe: %v error: test name: \"%v\", wanted outcome %v, got %v", From 1aa08fe4ab2a666a214aa0d7100b13d98422f69d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Thu, 3 Aug 2023 10:42:41 +0300 Subject: [PATCH 111/125] fix comment syntax MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeApproved/impl.go | 6 ++---- probes/codeReviewTwoReviewers/impl.go | 14 +++++++------- probes/codeReviewed/impl.go | 6 ++---- 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/probes/codeApproved/impl.go b/probes/codeApproved/impl.go index aff126c0ef1..3a8af5072c0 100644 --- a/probes/codeApproved/impl.go +++ b/probes/codeApproved/impl.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -// nolint +//nolint:stylecheck package codeApproved import ( @@ -34,10 +34,8 @@ func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { return approvedRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) } -/* -** Looks through the data and validates that each changeset has been approved at least once. - */ +// Looks through the data and validates that each changeset has been approved at least once. func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, positiveOutcome, negativeOutcome finding.Outcome, ) ([]finding.Finding, string, error) { diff --git a/probes/codeReviewTwoReviewers/impl.go b/probes/codeReviewTwoReviewers/impl.go index d28c7ac2a45..1f979c1a2d2 100644 --- a/probes/codeReviewTwoReviewers/impl.go +++ b/probes/codeReviewTwoReviewers/impl.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -//nolint +//nolint:stylecheck package codeReviewTwoReviewers import ( @@ -37,12 +37,12 @@ func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { return codeReviewRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) } -/* -** Looks through the data and validates author and reviewers of a changeset -** Scorecard currently only supports GitHub revisions and generates a positive -** score in the case of other platforms. This probe is created to ensure that -** there are a number of unique reviewers for each changeset. - */ + +// Looks through the data and validates author and reviewers of a changeset +// Scorecard currently only supports GitHub revisions and generates a positive +// score in the case of other platforms. This probe is created to ensure that +// there are a number of unique reviewers for each changeset. + func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, positiveOutcome, negativeOutcome finding.Outcome, diff --git a/probes/codeReviewed/impl.go b/probes/codeReviewed/impl.go index 35e7293287b..558d48cfff7 100644 --- a/probes/codeReviewed/impl.go +++ b/probes/codeReviewed/impl.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -// nolint +//nolint:stylecheck package codeReviewed import ( @@ -34,10 +34,8 @@ func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { return reviewedRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) } -/* -** Looks through the data and validates that each changeset has been approved at least once. - */ +// Looks through the data and validates that each changeset has been approved at least once. func reviewedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, positiveOutcome, negativeOutcome finding.Outcome, ) ([]finding.Finding, string, error) { From 64cbe05b0eea53ef7992653089383e10be9ceb87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Thu, 3 Aug 2023 11:41:24 +0300 Subject: [PATCH 112/125] gci-ed files to fix linter errors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- checks/code_review_test.go | 7 +++--- probes/codeApproved/impl.go | 14 ++++++------ probes/codeReviewTwoReviewers/impl.go | 31 +++++++++++++++------------ probes/codeReviewed/impl.go | 16 +++++++------- probes/entries.go | 6 +++--- 5 files changed, 39 insertions(+), 35 deletions(-) diff --git a/checks/code_review_test.go b/checks/code_review_test.go index b3e685373f8..22fc8b42d24 100644 --- a/checks/code_review_test.go +++ b/checks/code_review_test.go @@ -18,19 +18,20 @@ import ( "errors" "testing" "time" - + "github.com/golang/mock/gomock" + "github.com/ossf/scorecard/v4/checker" "github.com/ossf/scorecard/v4/clients" + mockrepo "github.com/ossf/scorecard/v4/clients/mockclients" "github.com/ossf/scorecard/v4/finding" "github.com/ossf/scorecard/v4/probes" "github.com/ossf/scorecard/v4/probes/zrunner" - mockrepo "github.com/ossf/scorecard/v4/clients/mockclients" scut "github.com/ossf/scorecard/v4/utests" ) var ( - errNew = errors.New("error") + errNew = errors.New("error") errProbeReturned = errors.New("probe run failure") ) diff --git a/probes/codeApproved/impl.go b/probes/codeApproved/impl.go index 3a8af5072c0..2ff904b4fc4 100644 --- a/probes/codeApproved/impl.go +++ b/probes/codeApproved/impl.go @@ -34,7 +34,6 @@ func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { return approvedRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) } - // Looks through the data and validates that each changeset has been approved at least once. func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, positiveOutcome, negativeOutcome finding.Outcome, @@ -59,7 +58,8 @@ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string } } } - if numBotAuthors == numChangesets { + switch { + case numBotAuthors == numChangesets: // returns a NotAvailable outcome if all changesets were authored by bots f, err := finding.NewNotAvailable(fs, probeID, "All changesets authored by bot(s).", nil) if err != nil { @@ -67,18 +67,18 @@ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string } findings = append(findings, *f) return findings, probeID, nil - } else if approvedReviews >= numChangesets { + case approvedReviews >= numChangesets: // returns PositiveOutcome if all changesets have been approved f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets approved (%v out of %v).", - approvedReviews, numChangesets), nil, positiveOutcome) + approvedReviews, numChangesets), nil, positiveOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } findings = append(findings, *f) - } else { + default: // returns NegativeOutcome if not all changesets were approved - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets approved. " + - "Found %v approvals among %v changesets.", approvedReviews, numChangesets), nil, negativeOutcome) + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets approved. "+ + "Found %v approvals among %v changesets.", approvedReviews, numChangesets), nil, negativeOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } diff --git a/probes/codeReviewTwoReviewers/impl.go b/probes/codeReviewTwoReviewers/impl.go index 1f979c1a2d2..e543827c55d 100644 --- a/probes/codeReviewTwoReviewers/impl.go +++ b/probes/codeReviewTwoReviewers/impl.go @@ -25,24 +25,26 @@ import ( "github.com/ossf/scorecard/v4/probes/utils" ) -//go:embed *.yml -var fs embed.FS +var ( + //go:embed *.yml + fs embed.FS + reviewerLoginErr = fmt.Errorf("could not find the login of a reviewer") +) -const probe = "codeReviewTwoReviewers" -const minimumReviewers = 2 -var reviewerLoginErr = fmt.Errorf("could not find the login of a reviewer") +const ( + probe = "codeReviewTwoReviewers" + minimumReviewers = 2 +) func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { rawReviewData := &raw.CodeReviewResults return codeReviewRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) } - // Looks through the data and validates author and reviewers of a changeset // Scorecard currently only supports GitHub revisions and generates a positive // score in the case of other platforms. This probe is created to ensure that // there are a number of unique reviewers for each changeset. - func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, positiveOutcome, negativeOutcome finding.Outcome, @@ -81,7 +83,8 @@ func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri leastFoundReviewers = numReviewers } } - if numBotAuthors == numChangesets { + switch { + case numBotAuthors == numChangesets: // returns a NotAvailable outcome if all changesets were authored by bots f, err := finding.NewNotAvailable(fs, probeID, "All changesets authored by bot(s).", nil) if err != nil { @@ -89,18 +92,18 @@ func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri } findings = append(findings, *f) return findings, probeID, nil - } else if leastFoundReviewers >= minimumReviewers { + case leastFoundReviewers >= minimumReviewers: // returns PositiveOutcome if the lowest number of unique reviewers is at least as high as minimumReviewers (2). - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewers found for at least one " + - "changeset, %v wanted.", leastFoundReviewers, minimumReviewers), nil, positiveOutcome) + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewers found for at least one "+ + "changeset, %v wanted.", leastFoundReviewers, minimumReviewers), nil, positiveOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } findings = append(findings, *f) - } else { + default: // returns NegativeOutcome if even a single changeset was reviewed by fewer than minimumReviewers (2). - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewer(s) found for at least one " + - "changeset, %v wanted.", leastFoundReviewers, minimumReviewers), nil, negativeOutcome) + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewer(s) found for at least one "+ + "changeset, %v wanted.", leastFoundReviewers, minimumReviewers), nil, negativeOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } diff --git a/probes/codeReviewed/impl.go b/probes/codeReviewed/impl.go index 558d48cfff7..5ee825e9ad0 100644 --- a/probes/codeReviewed/impl.go +++ b/probes/codeReviewed/impl.go @@ -34,7 +34,6 @@ func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { return reviewedRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) } - // Looks through the data and validates that each changeset has been approved at least once. func reviewedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, positiveOutcome, negativeOutcome finding.Outcome, @@ -56,7 +55,8 @@ func reviewedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string numReviews += 1 } } - if numBotAuthors == numChangesets { + switch { + case numBotAuthors == numChangesets: // returns a NotAvailable outcome if all changesets were authored by bots f, err := finding.NewNotAvailable(fs, probeID, "All changesets authored by bot(s).", nil) if err != nil { @@ -64,18 +64,18 @@ func reviewedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string } findings = append(findings, *f) return findings, probeID, nil - } else if numReviews >= numChangesets { + case numReviews >= numChangesets: // returns PositiveOutcome if all changesets had review activity - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets have review activity " + - "(%v out of %v).", numReviews, numChangesets), nil, positiveOutcome) + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets have review activity "+ + "(%v out of %v).", numReviews, numChangesets), nil, positiveOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } findings = append(findings, *f) - } else { + default: // returns NegativeOutcome if some changesets did not have review activity - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets have review activity. " + - "Found %v reviews among %v changesets.", numReviews, numChangesets), nil, negativeOutcome) + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets have review activity. "+ + "Found %v reviews among %v changesets.", numReviews, numChangesets), nil, negativeOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } diff --git a/probes/entries.go b/probes/entries.go index e4625038464..348c2bb140e 100644 --- a/probes/entries.go +++ b/probes/entries.go @@ -12,15 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. -//nolint // to prevent linter errors because of package names being camel case +//nolint:stylecheck package probes import ( "github.com/ossf/scorecard/v4/checker" "github.com/ossf/scorecard/v4/finding" "github.com/ossf/scorecard/v4/probes/codeApproved" - "github.com/ossf/scorecard/v4/probes/codeReviewed" "github.com/ossf/scorecard/v4/probes/codeReviewTwoReviewers" + "github.com/ossf/scorecard/v4/probes/codeReviewed" "github.com/ossf/scorecard/v4/probes/toolDependabotInstalled" "github.com/ossf/scorecard/v4/probes/toolPyUpInstalled" "github.com/ossf/scorecard/v4/probes/toolRenovateInstalled" @@ -41,7 +41,7 @@ var ( toolPyUpInstalled.Run, toolSonatypeLiftInstalled.Run, } - CodeReview = []ProbeImpl { + CodeReview = []ProbeImpl{ codeApproved.Run, codeReviewed.Run, codeReviewTwoReviewers.Run, From 57adecf24733b0734bc0915823420b942a3ac4b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Thu, 3 Aug 2023 13:56:18 +0300 Subject: [PATCH 113/125] implement change to skip bot-authored changesets that are reviewed/approved MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeApproved/impl.go | 44 +++++++++++++++++++++++-------------- probes/codeReviewed/impl.go | 44 +++++++++++++++++++++++-------------- 2 files changed, 54 insertions(+), 34 deletions(-) diff --git a/probes/codeApproved/impl.go b/probes/codeApproved/impl.go index 2ff904b4fc4..4000490215f 100644 --- a/probes/codeApproved/impl.go +++ b/probes/codeApproved/impl.go @@ -40,45 +40,55 @@ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string ) ([]finding.Finding, string, error) { changesets := reviewData.DefaultBranchChangesets var findings []finding.Finding - approvedReviews := 0 - numBotAuthors := 0 - numChangesets := len(changesets) - if numChangesets == 0 { + nApprovedChangesets := 0 + foundHumanActivity := false + nChangesets := len(changesets) + nHumanChangesets := 0 + if nChangesets == 0 { return nil, probeID, utils.NoChangesetsErr } for x := range changesets { data := &changesets[x] - if data.Author.IsBot { - numBotAuthors += 1 - } + approvedChangeset := false for y := range data.Reviews { if data.Reviews[y].State == "APPROVED" && data.Reviews[y].Author.Login != data.Author.Login { - approvedReviews += 1 + approvedChangeset = true break } } + if approvedChangeset && data.Author.IsBot { + continue + } + if !data.Author.IsBot { + foundHumanActivity = true + nHumanChangesets += 1 + } + if approvedChangeset { + nApprovedChangesets += 1 + } } switch { - case numBotAuthors == numChangesets: + case nHumanChangesets == 0 || !foundHumanActivity: // returns a NotAvailable outcome if all changesets were authored by bots - f, err := finding.NewNotAvailable(fs, probeID, "All changesets authored by bot(s).", nil) + f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprint("found no human review activity " + + "in the last %v changesets", nChangesets), nil) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } findings = append(findings, *f) return findings, probeID, nil - case approvedReviews >= numChangesets: - // returns PositiveOutcome if all changesets have been approved - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets approved (%v out of %v).", - approvedReviews, numChangesets), nil, positiveOutcome) + case nApprovedChangesets < nHumanChangesets: + // returns NegativeOutcome if not all changesets were approved + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets approved. "+ + "Found %v approvals among %v changesets.", nApprovedChangesets, nChangesets), nil, negativeOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } findings = append(findings, *f) default: - // returns NegativeOutcome if not all changesets were approved - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets approved. "+ - "Found %v approvals among %v changesets.", approvedReviews, numChangesets), nil, negativeOutcome) + // returns PositiveOutcome if all changesets have been approved + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets approved (%v out of %v).", + nApprovedChangesets, nChangesets), nil, positiveOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } diff --git a/probes/codeReviewed/impl.go b/probes/codeReviewed/impl.go index 5ee825e9ad0..1b18b9db53d 100644 --- a/probes/codeReviewed/impl.go +++ b/probes/codeReviewed/impl.go @@ -40,42 +40,52 @@ func reviewedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string ) ([]finding.Finding, string, error) { changesets := reviewData.DefaultBranchChangesets var findings []finding.Finding - numReviews := 0 - numBotAuthors := 0 - numChangesets := len(changesets) - if numChangesets == 0 { + foundHumanActivity := false + nReviewedChangesets := 0 + nChangesets := len(changesets) + nHumanChangesets := 0 + if nChangesets == 0 { return nil, probeID, utils.NoChangesetsErr } for x := range changesets { data := &changesets[x] - if data.Author.IsBot { - numBotAuthors += 1 - } + reviewedChangeset := false if len(data.Reviews) > 0 { - numReviews += 1 + reviewedChangeset = true + } + if reviewedChangeset && data.Author.IsBot { + continue + } + if !data.Author.IsBot { + foundHumanActivity = true + nHumanChangesets += 1 + } + if reviewedChangeset { + nReviewedChangesets += 1 } } switch { - case numBotAuthors == numChangesets: + case nHumanChangesets == 0 || !foundHumanActivity: // returns a NotAvailable outcome if all changesets were authored by bots - f, err := finding.NewNotAvailable(fs, probeID, "All changesets authored by bot(s).", nil) + f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprint("found no human review activity " + + "in the last %v changesets", nChangesets), nil) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } findings = append(findings, *f) return findings, probeID, nil - case numReviews >= numChangesets: - // returns PositiveOutcome if all changesets had review activity - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets have review activity "+ - "(%v out of %v).", numReviews, numChangesets), nil, positiveOutcome) + case nReviewedChangesets < nHumanChangesets: + // returns NegativeOutcome if some changesets did not have review activity + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets have review activity. "+ + "Found %v reviews among %v changesets.", nReviewedChangesets, nChangesets), nil, negativeOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } findings = append(findings, *f) default: - // returns NegativeOutcome if some changesets did not have review activity - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets have review activity. "+ - "Found %v reviews among %v changesets.", numReviews, numChangesets), nil, negativeOutcome) + // returns PositiveOutcome if all changesets had review activity + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets have review activity "+ + "(%v out of %v).", nReviewedChangesets, nChangesets), nil, positiveOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } From 46a889afd5c9390c6d920b724c62e44850c7bae2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Thu, 3 Aug 2023 14:36:32 +0300 Subject: [PATCH 114/125] rewrite finding message MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeReviewTwoReviewers/impl.go | 32 +++++++++++++-------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/probes/codeReviewTwoReviewers/impl.go b/probes/codeReviewTwoReviewers/impl.go index e543827c55d..369b4959de2 100644 --- a/probes/codeReviewTwoReviewers/impl.go +++ b/probes/codeReviewTwoReviewers/impl.go @@ -51,10 +51,10 @@ func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri ) ([]finding.Finding, string, error) { changesets := reviewData.DefaultBranchChangesets var findings []finding.Finding + foundHumanActivity := false leastFoundReviewers := 0 - numChangesets := len(changesets) - numBotAuthors := 0 - if numChangesets == 0 { + nChangesets := len(changesets) + if nChangesets == 0 { return nil, probeID, utils.NoChangesetsErr } // Loops through all changesets, if an author login cannot be retrieved: returns OutcomeNotAvailabe. @@ -68,10 +68,10 @@ func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri } findings = append(findings, *f) return findings, probeID, nil - } else if data.Author.IsBot { - numBotAuthors += 1 + } else if !data.Author.IsBot { + foundHumanActivity = true } - numReviewers, err := uniqueReviewers(data.Author.Login, data.Reviews) + nReviewers, err := uniqueReviewers(data.Author.Login, data.Reviews) if err != nil { f, err := finding.NewNotAvailable(fs, probeID, "Could not retrieve the reviewer of a changeset.", nil) if err != nil { @@ -79,12 +79,12 @@ func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri } findings = append(findings, *f) return findings, probeID, nil - } else if i == 0 || numReviewers < leastFoundReviewers { - leastFoundReviewers = numReviewers + } else if i == 0 || nReviewers < leastFoundReviewers { + leastFoundReviewers = nReviewers } } switch { - case numBotAuthors == numChangesets: + case !foundHumanActivity: // returns a NotAvailable outcome if all changesets were authored by bots f, err := finding.NewNotAvailable(fs, probeID, "All changesets authored by bot(s).", nil) if err != nil { @@ -92,18 +92,18 @@ func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri } findings = append(findings, *f) return findings, probeID, nil - case leastFoundReviewers >= minimumReviewers: - // returns PositiveOutcome if the lowest number of unique reviewers is at least as high as minimumReviewers (2). - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewers found for at least one "+ - "changeset, %v wanted.", leastFoundReviewers, minimumReviewers), nil, positiveOutcome) + case leastFoundReviewers < minimumReviewers: + // returns NegativeOutcome if even a single changeset was reviewed by fewer than minimumReviewers (2). + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("some changesets had <%d reviewers", + minimumReviewers), nil, negativeOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } findings = append(findings, *f) default: - // returns NegativeOutcome if even a single changeset was reviewed by fewer than minimumReviewers (2). - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("%v unique reviewer(s) found for at least one "+ - "changeset, %v wanted.", leastFoundReviewers, minimumReviewers), nil, negativeOutcome) + // returns PositiveOutcome if the lowest number of unique reviewers is at least as high as minimumReviewers (2). + f, err := finding.NewWith(fs, probeID, fmt.Sprintf(">%d reviewers found for all changesets", + minimumReviewers), nil, positiveOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } From b23daa1398bdba813d3b4444db4983e26f26136a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Thu, 3 Aug 2023 14:37:36 +0300 Subject: [PATCH 115/125] fix output message; do not count the number of approved bot-authored changesets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeApproved/impl.go | 22 +++++++++++----------- probes/codeReviewed/impl.go | 22 +++++++++++----------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/probes/codeApproved/impl.go b/probes/codeApproved/impl.go index 4000490215f..6f773844594 100644 --- a/probes/codeApproved/impl.go +++ b/probes/codeApproved/impl.go @@ -40,10 +40,10 @@ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string ) ([]finding.Finding, string, error) { changesets := reviewData.DefaultBranchChangesets var findings []finding.Finding - nApprovedChangesets := 0 foundHumanActivity := false nChangesets := len(changesets) - nHumanChangesets := 0 + nChanges := 0 + nUnapprovedChangesets := 0 if nChangesets == 0 { return nil, probeID, utils.NoChangesetsErr } @@ -59,36 +59,36 @@ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string if approvedChangeset && data.Author.IsBot { continue } + nChanges += 1 if !data.Author.IsBot { foundHumanActivity = true - nHumanChangesets += 1 } - if approvedChangeset { - nApprovedChangesets += 1 + if !approvedChangeset { + nUnapprovedChangesets += 1 } } switch { - case nHumanChangesets == 0 || !foundHumanActivity: + case !foundHumanActivity: // returns a NotAvailable outcome if all changesets were authored by bots - f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprint("found no human review activity " + + f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprint("Found no human activity " + "in the last %v changesets", nChangesets), nil) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } findings = append(findings, *f) return findings, probeID, nil - case nApprovedChangesets < nHumanChangesets: + case nUnapprovedChangesets > 0: // returns NegativeOutcome if not all changesets were approved f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets approved. "+ - "Found %v approvals among %v changesets.", nApprovedChangesets, nChangesets), nil, negativeOutcome) + "Found %d unapproved changesets of %d.", nUnapprovedChangesets, nChanges), nil, negativeOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } findings = append(findings, *f) default: // returns PositiveOutcome if all changesets have been approved - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets approved (%v out of %v).", - nApprovedChangesets, nChangesets), nil, positiveOutcome) + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All %d changesets approved.", + nChangesets), nil, positiveOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } diff --git a/probes/codeReviewed/impl.go b/probes/codeReviewed/impl.go index 1b18b9db53d..bd4b2bdb99b 100644 --- a/probes/codeReviewed/impl.go +++ b/probes/codeReviewed/impl.go @@ -41,9 +41,9 @@ func reviewedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string changesets := reviewData.DefaultBranchChangesets var findings []finding.Finding foundHumanActivity := false - nReviewedChangesets := 0 + nUnreviewedChangesets := 0 nChangesets := len(changesets) - nHumanChangesets := 0 + nChanges := 0 if nChangesets == 0 { return nil, probeID, utils.NoChangesetsErr } @@ -56,36 +56,36 @@ func reviewedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string if reviewedChangeset && data.Author.IsBot { continue } + nChanges += 1 if !data.Author.IsBot { foundHumanActivity = true - nHumanChangesets += 1 } - if reviewedChangeset { - nReviewedChangesets += 1 + if !reviewedChangeset { + nUnreviewedChangesets += 1 } } switch { - case nHumanChangesets == 0 || !foundHumanActivity: + case !foundHumanActivity: // returns a NotAvailable outcome if all changesets were authored by bots - f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprint("found no human review activity " + + f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprint("Found no human activity " + "in the last %v changesets", nChangesets), nil) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } findings = append(findings, *f) return findings, probeID, nil - case nReviewedChangesets < nHumanChangesets: + case nUnreviewedChangesets > 0: // returns NegativeOutcome if some changesets did not have review activity f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets have review activity. "+ - "Found %v reviews among %v changesets.", nReviewedChangesets, nChangesets), nil, negativeOutcome) + "Found %d unreviewed changesets of %d.", nUnreviewedChangesets, nChanges), nil, negativeOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } findings = append(findings, *f) default: // returns PositiveOutcome if all changesets had review activity - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All changesets have review activity "+ - "(%v out of %v).", nReviewedChangesets, nChangesets), nil, positiveOutcome) + f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All %d changesets have review activity.", + nChangesets), nil, positiveOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } From 51a9ac84ae06421ed141d105e2e0666cadb21764 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Thu, 3 Aug 2023 14:52:14 +0300 Subject: [PATCH 116/125] fix typos MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/codeApproved/impl.go | 6 +++--- probes/codeReviewTwoReviewers/impl.go | 4 ++-- probes/codeReviewed/impl.go | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/probes/codeApproved/impl.go b/probes/codeApproved/impl.go index 6f773844594..8568f04a574 100644 --- a/probes/codeApproved/impl.go +++ b/probes/codeApproved/impl.go @@ -70,8 +70,8 @@ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string switch { case !foundHumanActivity: // returns a NotAvailable outcome if all changesets were authored by bots - f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprint("Found no human activity " + - "in the last %v changesets", nChangesets), nil) + f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprintf("Found no human activity "+ + "in the last %d changesets", nChangesets), nil) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } @@ -80,7 +80,7 @@ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string case nUnapprovedChangesets > 0: // returns NegativeOutcome if not all changesets were approved f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets approved. "+ - "Found %d unapproved changesets of %d.", nUnapprovedChangesets, nChanges), nil, negativeOutcome) + "Found %d unapproved changesets of %d.", nUnapprovedChangesets, nChanges), nil, negativeOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } diff --git a/probes/codeReviewTwoReviewers/impl.go b/probes/codeReviewTwoReviewers/impl.go index 369b4959de2..91cacab6657 100644 --- a/probes/codeReviewTwoReviewers/impl.go +++ b/probes/codeReviewTwoReviewers/impl.go @@ -95,7 +95,7 @@ func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri case leastFoundReviewers < minimumReviewers: // returns NegativeOutcome if even a single changeset was reviewed by fewer than minimumReviewers (2). f, err := finding.NewWith(fs, probeID, fmt.Sprintf("some changesets had <%d reviewers", - minimumReviewers), nil, negativeOutcome) + minimumReviewers), nil, negativeOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } @@ -103,7 +103,7 @@ func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri default: // returns PositiveOutcome if the lowest number of unique reviewers is at least as high as minimumReviewers (2). f, err := finding.NewWith(fs, probeID, fmt.Sprintf(">%d reviewers found for all changesets", - minimumReviewers), nil, positiveOutcome) + minimumReviewers), nil, positiveOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } diff --git a/probes/codeReviewed/impl.go b/probes/codeReviewed/impl.go index bd4b2bdb99b..14ce84d11ac 100644 --- a/probes/codeReviewed/impl.go +++ b/probes/codeReviewed/impl.go @@ -67,8 +67,8 @@ func reviewedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string switch { case !foundHumanActivity: // returns a NotAvailable outcome if all changesets were authored by bots - f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprint("Found no human activity " + - "in the last %v changesets", nChangesets), nil) + f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprintf("Found no human activity "+ + "in the last %d changesets", nChangesets), nil) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } @@ -77,7 +77,7 @@ func reviewedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string case nUnreviewedChangesets > 0: // returns NegativeOutcome if some changesets did not have review activity f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets have review activity. "+ - "Found %d unreviewed changesets of %d.", nUnreviewedChangesets, nChanges), nil, negativeOutcome) + "Found %d unreviewed changesets of %d.", nUnreviewedChangesets, nChanges), nil, negativeOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } @@ -85,7 +85,7 @@ func reviewedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string default: // returns PositiveOutcome if all changesets had review activity f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All %d changesets have review activity.", - nChangesets), nil, positiveOutcome) + nChangesets), nil, positiveOutcome) if err != nil { return nil, probeID, fmt.Errorf("create finding: %w", err) } From 9945678d0c1e0f87e16e87902457a6d278fae821 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Fri, 18 Aug 2023 12:22:38 +0300 Subject: [PATCH 117/125] moved probe tests to their corresponding location MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- checks/code_review_test.go | 277 +-------------------- probes/codeApproved/impl_test.go | 257 +++++++++++++++++++ probes/codeReviewTwoReviewers/impl_test.go | 257 +++++++++++++++++++ probes/codeReviewed/def.yml | 30 --- probes/codeReviewed/impl.go | 95 ------- 5 files changed, 515 insertions(+), 401 deletions(-) create mode 100644 probes/codeApproved/impl_test.go create mode 100644 probes/codeReviewTwoReviewers/impl_test.go delete mode 100644 probes/codeReviewed/def.yml delete mode 100644 probes/codeReviewed/impl.go diff --git a/checks/code_review_test.go b/checks/code_review_test.go index 22fc8b42d24..b1d8691ed89 100644 --- a/checks/code_review_test.go +++ b/checks/code_review_test.go @@ -24,16 +24,10 @@ import ( "github.com/ossf/scorecard/v4/checker" "github.com/ossf/scorecard/v4/clients" mockrepo "github.com/ossf/scorecard/v4/clients/mockclients" - "github.com/ossf/scorecard/v4/finding" - "github.com/ossf/scorecard/v4/probes" - "github.com/ossf/scorecard/v4/probes/zrunner" scut "github.com/ossf/scorecard/v4/utests" ) -var ( - errNew = errors.New("error") - errProbeReturned = errors.New("probe run failure") -) +var errNew = errors.New("error") // TestCodeReview tests the code review checker. func TestCodereview(t *testing.T) { @@ -314,272 +308,3 @@ func TestCodereview(t *testing.T) { }) } } - -// TestProbesCodereview tests the probes associated with the Code-Review check. -func TestProbesCodereview(t *testing.T) { - t.Parallel() - probeTests := []struct { - name string - rawResults *checker.RawResults - err error - expectedFindings []finding.Finding - }{ - { - name: "no changesets", - rawResults: &checker.RawResults{ - CodeReviewResults: checker.CodeReviewData{ - DefaultBranchChangesets: []checker.Changeset{}, - }, - }, - err: errProbeReturned, - expectedFindings: nil, - }, - { - name: "no reviews", - rawResults: &checker.RawResults{ - CodeReviewResults: checker.CodeReviewData{ - DefaultBranchChangesets: []checker.Changeset{ - { - ReviewPlatform: checker.ReviewPlatformGitHub, - Commits: []clients.Commit{ - {}, - }, - Reviews: []clients.Review{}, - Author: clients.User{Login: "pedro"}, - }, - }, - }, - }, - expectedFindings: []finding.Finding{ - { - Probe: "codeApproved", - Outcome: finding.OutcomeNegative, - }, - { - Probe: "codeReviewed", - Outcome: finding.OutcomeNegative, - }, - { - Probe: "codeReviewTwoReviewers", - Outcome: finding.OutcomeNegative, - }, - }, - }, - { - name: "all authors are bots", - rawResults: &checker.RawResults{ - CodeReviewResults: checker.CodeReviewData{ - DefaultBranchChangesets: []checker.Changeset{ - { - ReviewPlatform: checker.ReviewPlatformGitHub, - Commits: []clients.Commit{ - { - SHA: "sha", - Committer: clients.User{ - Login: "bot", - IsBot: true, - }, - Message: "Title\nPiperOrigin-RevId: 444529962", - }, - }, - Reviews: []clients.Review{}, - Author: clients.User{ - Login: "bot", - IsBot: true, - }, - }, - { - ReviewPlatform: checker.ReviewPlatformGitHub, - Commits: []clients.Commit{ - { - SHA: "sha2", - Committer: clients.User{ - Login: "bot", - IsBot: true, - }, - }, - }, - Reviews: []clients.Review{}, - Author: clients.User{ - Login: "bot", - IsBot: true, - }, - }, - }, - }, - }, - expectedFindings: []finding.Finding{ - { - Probe: "codeApproved", - Outcome: finding.OutcomeNotAvailable, - }, - { - Probe: "codeReviewed", - Outcome: finding.OutcomeNotAvailable, - }, - { - Probe: "codeReviewTwoReviewers", - Outcome: finding.OutcomeNotAvailable, - }, - }, - }, - { - name: "no approvals, reviewed once", - rawResults: &checker.RawResults{ - CodeReviewResults: checker.CodeReviewData{ - DefaultBranchChangesets: []checker.Changeset{ - { - ReviewPlatform: checker.ReviewPlatformGitHub, - Commits: []clients.Commit{ - { - SHA: "sha", - Committer: clients.User{Login: "kratos"}, - Message: "Title\nPiperOrigin-RevId: 444529962", - }, - }, - Reviews: []clients.Review{ - { - Author: &clients.User{Login: "loki"}, - }, - }, - Author: clients.User{Login: "kratos"}, - }, - }, - }, - }, - expectedFindings: []finding.Finding{ - { - Probe: "codeApproved", - Outcome: finding.OutcomeNegative, - }, - { - Probe: "codeReviewed", - Outcome: finding.OutcomePositive, - }, - { - Probe: "codeReviewTwoReviewers", - Outcome: finding.OutcomeNegative, - }, - }, - }, - { - name: "four reviewers, only one unique", - rawResults: &checker.RawResults{ - CodeReviewResults: checker.CodeReviewData{ - DefaultBranchChangesets: []checker.Changeset{ - { - ReviewPlatform: checker.ReviewPlatformGitHub, - Commits: []clients.Commit{ - { - SHA: "sha", - Committer: clients.User{Login: "kratos"}, - Message: "Title\nPiperOrigin-RevId: 444529962", - }, - }, - Reviews: []clients.Review{ - { - Author: &clients.User{Login: "loki"}, - State: "APPROVED", - }, - { - Author: &clients.User{Login: "loki"}, - State: "APPROVED", - }, - { - Author: &clients.User{Login: "kratos"}, - State: "APPROVED", - }, - { - Author: &clients.User{Login: "kratos"}, - State: "APPROVED", - }, - }, - Author: clients.User{Login: "kratos"}, - }, - }, - }, - }, - expectedFindings: []finding.Finding{ - { - Probe: "codeApproved", - Outcome: finding.OutcomePositive, - }, - { - Probe: "codeReviewed", - Outcome: finding.OutcomePositive, - }, - { - Probe: "codeReviewTwoReviewers", - Outcome: finding.OutcomeNegative, - }, - }, - }, - { - name: "reviewed and approved twice", - rawResults: &checker.RawResults{ - CodeReviewResults: checker.CodeReviewData{ - DefaultBranchChangesets: []checker.Changeset{ - { - ReviewPlatform: checker.ReviewPlatformGitHub, - Commits: []clients.Commit{ - { - SHA: "sha", - Committer: clients.User{Login: "kratos"}, - Message: "Title\nPiperOrigin-RevId: 444529962", - }, - }, - Reviews: []clients.Review{ - { - Author: &clients.User{Login: "loki"}, - State: "APPROVED", - }, - { - Author: &clients.User{Login: "baldur"}, - State: "APPROVED", - }, - }, - Author: clients.User{Login: "kratos"}, - }, - }, - }, - }, - expectedFindings: []finding.Finding{ - { - Probe: "codeApproved", - Outcome: finding.OutcomePositive, - }, - { - Probe: "codeReviewed", - Outcome: finding.OutcomePositive, - }, - { - Probe: "codeReviewTwoReviewers", - Outcome: finding.OutcomePositive, - }, - }, - }, - } - - for _, tt := range probeTests { - tt := tt // Re-initializing variable so it is not changed while executing the closure below. - t.Run(tt.name, func(t *testing.T) { - t.Parallel() - res, err := zrunner.Run(tt.rawResults, probes.CodeReview) - switch { - case err != nil && tt.err == nil: - t.Errorf("Uxpected error %v", err) - case tt.err != nil && err == nil: - t.Errorf("Expected error %v, got nil", tt.err) - case res == nil && err == nil: - t.Errorf("Probe(s) returned nil for both finding and error") - default: - for i := range tt.expectedFindings { - if tt.expectedFindings[i].Outcome != res[i].Outcome { - t.Errorf("Code-review probe: %v error: test name: \"%v\", wanted outcome %v, got %v", - res[i].Probe, tt.name, tt.expectedFindings[i].Outcome, res[i].Outcome) - } - } - } - }) - } -} diff --git a/probes/codeApproved/impl_test.go b/probes/codeApproved/impl_test.go new file mode 100644 index 00000000000..f2f7a553f2a --- /dev/null +++ b/probes/codeApproved/impl_test.go @@ -0,0 +1,257 @@ +// Copyright 2023 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//nolint:stylecheck +package codeApproved + +import ( + "errors" + "testing" + + "github.com/ossf/scorecard/v4/checker" + "github.com/ossf/scorecard/v4/clients" + "github.com/ossf/scorecard/v4/finding" +) + +var errProbeReturned = errors.New("probe run failure") + +func TestProbeCodeApproved(t *testing.T) { + t.Parallel() + probeTests := []struct { + name string + rawResults *checker.RawResults + err error + expectedFindings []finding.Finding + }{ + { + name: "no changesets", + rawResults: &checker.RawResults{ + CodeReviewResults: checker.CodeReviewData{ + DefaultBranchChangesets: []checker.Changeset{}, + }, + }, + err: errProbeReturned, + expectedFindings: nil, + }, + { + name: "no reviews", + rawResults: &checker.RawResults{ + CodeReviewResults: checker.CodeReviewData{ + DefaultBranchChangesets: []checker.Changeset{ + { + ReviewPlatform: checker.ReviewPlatformGitHub, + Commits: []clients.Commit{ + {}, + }, + Reviews: []clients.Review{}, + Author: clients.User{Login: "pedro"}, + }, + }, + }, + }, + expectedFindings: []finding.Finding{ + { + Probe: "codeApproved", + Outcome: finding.OutcomeNegative, + }, + }, + }, + { + name: "all authors are bots", + rawResults: &checker.RawResults{ + CodeReviewResults: checker.CodeReviewData{ + DefaultBranchChangesets: []checker.Changeset{ + { + ReviewPlatform: checker.ReviewPlatformGitHub, + Commits: []clients.Commit{ + { + SHA: "sha", + Committer: clients.User{ + Login: "bot", + IsBot: true, + }, + Message: "Title\nPiperOrigin-RevId: 444529962", + }, + }, + Reviews: []clients.Review{}, + Author: clients.User{ + Login: "bot", + IsBot: true, + }, + }, + { + ReviewPlatform: checker.ReviewPlatformGitHub, + Commits: []clients.Commit{ + { + SHA: "sha2", + Committer: clients.User{ + Login: "bot", + IsBot: true, + }, + }, + }, + Reviews: []clients.Review{}, + Author: clients.User{ + Login: "bot", + IsBot: true, + }, + }, + }, + }, + }, + expectedFindings: []finding.Finding{ + { + Probe: "codeApproved", + Outcome: finding.OutcomeNotAvailable, + }, + }, + }, + { + name: "no approvals, reviewed once", + rawResults: &checker.RawResults{ + CodeReviewResults: checker.CodeReviewData{ + DefaultBranchChangesets: []checker.Changeset{ + { + ReviewPlatform: checker.ReviewPlatformGitHub, + Commits: []clients.Commit{ + { + SHA: "sha", + Committer: clients.User{Login: "kratos"}, + Message: "Title\nPiperOrigin-RevId: 444529962", + }, + }, + Reviews: []clients.Review{ + { + Author: &clients.User{Login: "loki"}, + }, + }, + Author: clients.User{Login: "kratos"}, + }, + }, + }, + }, + expectedFindings: []finding.Finding{ + { + Probe: "codeApproved", + Outcome: finding.OutcomeNegative, + }, + }, + }, + { + name: "four reviewers, only one unique", + rawResults: &checker.RawResults{ + CodeReviewResults: checker.CodeReviewData{ + DefaultBranchChangesets: []checker.Changeset{ + { + ReviewPlatform: checker.ReviewPlatformGitHub, + Commits: []clients.Commit{ + { + SHA: "sha", + Committer: clients.User{Login: "kratos"}, + Message: "Title\nPiperOrigin-RevId: 444529962", + }, + }, + Reviews: []clients.Review{ + { + Author: &clients.User{Login: "loki"}, + State: "APPROVED", + }, + { + Author: &clients.User{Login: "loki"}, + State: "APPROVED", + }, + { + Author: &clients.User{Login: "kratos"}, + State: "APPROVED", + }, + { + Author: &clients.User{Login: "kratos"}, + State: "APPROVED", + }, + }, + Author: clients.User{Login: "kratos"}, + }, + }, + }, + }, + expectedFindings: []finding.Finding{ + { + Probe: "codeApproved", + Outcome: finding.OutcomePositive, + }, + }, + }, + { + name: "reviewed and approved twice", + rawResults: &checker.RawResults{ + CodeReviewResults: checker.CodeReviewData{ + DefaultBranchChangesets: []checker.Changeset{ + { + ReviewPlatform: checker.ReviewPlatformGitHub, + Commits: []clients.Commit{ + { + SHA: "sha", + Committer: clients.User{Login: "kratos"}, + Message: "Title\nPiperOrigin-RevId: 444529962", + }, + }, + Reviews: []clients.Review{ + { + Author: &clients.User{Login: "loki"}, + State: "APPROVED", + }, + { + Author: &clients.User{Login: "baldur"}, + State: "APPROVED", + }, + }, + Author: clients.User{Login: "kratos"}, + }, + }, + }, + }, + expectedFindings: []finding.Finding{ + { + Probe: "codeApproved", + Outcome: finding.OutcomePositive, + }, + }, + }, + } + + for _, tt := range probeTests { + tt := tt // Re-initializing variable so it is not changed while executing the closure below. + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + res, probeID, err := Run(tt.rawResults) + switch { + case err != nil && tt.err == nil: + t.Errorf("Uxpected error %v", err) + case tt.err != nil && err == nil: + t.Errorf("Expected error %v, got nil", tt.err) + case res == nil && err == nil: + t.Errorf("Probe returned nil for both finding and error") + case probeID != probe: + t.Errorf("Probe returned the wrong probe ID") + default: + for i := range tt.expectedFindings { + if tt.expectedFindings[i].Outcome != res[i].Outcome { + t.Errorf("Code-review probe: %v error: test name: \"%v\", wanted outcome %v, got %v", + res[i].Probe, tt.name, tt.expectedFindings[i].Outcome, res[i].Outcome) + } + } + } + }) + } +} diff --git a/probes/codeReviewTwoReviewers/impl_test.go b/probes/codeReviewTwoReviewers/impl_test.go new file mode 100644 index 00000000000..64b32d31554 --- /dev/null +++ b/probes/codeReviewTwoReviewers/impl_test.go @@ -0,0 +1,257 @@ +// Copyright 2023 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//nolint:stylecheck +package codeReviewTwoReviewers + +import ( + "errors" + "testing" + + "github.com/ossf/scorecard/v4/checker" + "github.com/ossf/scorecard/v4/clients" + "github.com/ossf/scorecard/v4/finding" +) + +var errProbeReturned = errors.New("probe run failure") + +func TestProbeCodeApproved(t *testing.T) { + t.Parallel() + probeTests := []struct { + name string + rawResults *checker.RawResults + err error + expectedFindings []finding.Finding + }{ + { + name: "no changesets", + rawResults: &checker.RawResults{ + CodeReviewResults: checker.CodeReviewData{ + DefaultBranchChangesets: []checker.Changeset{}, + }, + }, + err: errProbeReturned, + expectedFindings: nil, + }, + { + name: "no reviews", + rawResults: &checker.RawResults{ + CodeReviewResults: checker.CodeReviewData{ + DefaultBranchChangesets: []checker.Changeset{ + { + ReviewPlatform: checker.ReviewPlatformGitHub, + Commits: []clients.Commit{ + {}, + }, + Reviews: []clients.Review{}, + Author: clients.User{Login: "pedro"}, + }, + }, + }, + }, + expectedFindings: []finding.Finding{ + { + Probe: "codeReviewTwoReviewers", + Outcome: finding.OutcomeNegative, + }, + }, + }, + { + name: "all authors are bots", + rawResults: &checker.RawResults{ + CodeReviewResults: checker.CodeReviewData{ + DefaultBranchChangesets: []checker.Changeset{ + { + ReviewPlatform: checker.ReviewPlatformGitHub, + Commits: []clients.Commit{ + { + SHA: "sha", + Committer: clients.User{ + Login: "bot", + IsBot: true, + }, + Message: "Title\nPiperOrigin-RevId: 444529962", + }, + }, + Reviews: []clients.Review{}, + Author: clients.User{ + Login: "bot", + IsBot: true, + }, + }, + { + ReviewPlatform: checker.ReviewPlatformGitHub, + Commits: []clients.Commit{ + { + SHA: "sha2", + Committer: clients.User{ + Login: "bot", + IsBot: true, + }, + }, + }, + Reviews: []clients.Review{}, + Author: clients.User{ + Login: "bot", + IsBot: true, + }, + }, + }, + }, + }, + expectedFindings: []finding.Finding{ + { + Probe: "codeReviewTwoReviewers", + Outcome: finding.OutcomeNotAvailable, + }, + }, + }, + { + name: "no approvals, reviewed once", + rawResults: &checker.RawResults{ + CodeReviewResults: checker.CodeReviewData{ + DefaultBranchChangesets: []checker.Changeset{ + { + ReviewPlatform: checker.ReviewPlatformGitHub, + Commits: []clients.Commit{ + { + SHA: "sha", + Committer: clients.User{Login: "kratos"}, + Message: "Title\nPiperOrigin-RevId: 444529962", + }, + }, + Reviews: []clients.Review{ + { + Author: &clients.User{Login: "loki"}, + }, + }, + Author: clients.User{Login: "kratos"}, + }, + }, + }, + }, + expectedFindings: []finding.Finding{ + { + Probe: "codeReviewTwoReviewers", + Outcome: finding.OutcomeNegative, + }, + }, + }, + { + name: "four reviewers, only one unique", + rawResults: &checker.RawResults{ + CodeReviewResults: checker.CodeReviewData{ + DefaultBranchChangesets: []checker.Changeset{ + { + ReviewPlatform: checker.ReviewPlatformGitHub, + Commits: []clients.Commit{ + { + SHA: "sha", + Committer: clients.User{Login: "kratos"}, + Message: "Title\nPiperOrigin-RevId: 444529962", + }, + }, + Reviews: []clients.Review{ + { + Author: &clients.User{Login: "loki"}, + State: "APPROVED", + }, + { + Author: &clients.User{Login: "loki"}, + State: "APPROVED", + }, + { + Author: &clients.User{Login: "kratos"}, + State: "APPROVED", + }, + { + Author: &clients.User{Login: "kratos"}, + State: "APPROVED", + }, + }, + Author: clients.User{Login: "kratos"}, + }, + }, + }, + }, + expectedFindings: []finding.Finding{ + { + Probe: "codeReviewTwoReviewers", + Outcome: finding.OutcomeNegative, + }, + }, + }, + { + name: "reviewed and approved twice", + rawResults: &checker.RawResults{ + CodeReviewResults: checker.CodeReviewData{ + DefaultBranchChangesets: []checker.Changeset{ + { + ReviewPlatform: checker.ReviewPlatformGitHub, + Commits: []clients.Commit{ + { + SHA: "sha", + Committer: clients.User{Login: "kratos"}, + Message: "Title\nPiperOrigin-RevId: 444529962", + }, + }, + Reviews: []clients.Review{ + { + Author: &clients.User{Login: "loki"}, + State: "APPROVED", + }, + { + Author: &clients.User{Login: "baldur"}, + State: "APPROVED", + }, + }, + Author: clients.User{Login: "kratos"}, + }, + }, + }, + }, + expectedFindings: []finding.Finding{ + { + Probe: "codeReviewTwoReviewers", + Outcome: finding.OutcomePositive, + }, + }, + }, + } + + for _, tt := range probeTests { + tt := tt // Re-initializing variable so it is not changed while executing the closure below. + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + res, probeID, err := Run(tt.rawResults) + switch { + case err != nil && tt.err == nil: + t.Errorf("Uxpected error %v", err) + case tt.err != nil && err == nil: + t.Errorf("Expected error %v, got nil", tt.err) + case res == nil && err == nil: + t.Errorf("Probe(s) returned nil for both finding and error") + case probeID != probe: + t.Errorf("Probe returned the wrong probe ID") + default: + for i := range tt.expectedFindings { + if tt.expectedFindings[i].Outcome != res[i].Outcome { + t.Errorf("Code-review probe: %v error: test name: \"%v\", wanted outcome %v, got %v", + res[i].Probe, tt.name, tt.expectedFindings[i].Outcome, res[i].Outcome) + } + } + } + }) + } +} diff --git a/probes/codeReviewed/def.yml b/probes/codeReviewed/def.yml deleted file mode 100644 index 740e97d267c..00000000000 --- a/probes/codeReviewed/def.yml +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright 2023 OpenSSF Scorecard Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -id: codeReviewed -short: Check that there is some review activity for each changeset. -motivation: > - To ensure that the review process works, the proposed changes - should have a minimum number of reviews. -implementation: > - The implementation looks for the reviews of a changeset. -outcome: - - If all changesets have review activity, the probe returns OutcomePositive (1) - - If a changeset has no review activity, the prove returns OutcomeNegative (0) -remediation: - effort: Low - text: - - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. - markdown: - - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. diff --git a/probes/codeReviewed/impl.go b/probes/codeReviewed/impl.go deleted file mode 100644 index 14ce84d11ac..00000000000 --- a/probes/codeReviewed/impl.go +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2023 OpenSSF Scorecard Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -//nolint:stylecheck -package codeReviewed - -import ( - "embed" - "fmt" - - "github.com/ossf/scorecard/v4/checker" - "github.com/ossf/scorecard/v4/finding" - "github.com/ossf/scorecard/v4/probes/utils" -) - -//go:embed *.yml -var fs embed.FS - -const probe = "codeReviewed" - -func Run(raw *checker.RawResults) ([]finding.Finding, string, error) { - rawReviewData := &raw.CodeReviewResults - return reviewedRun(rawReviewData, fs, probe, finding.OutcomePositive, finding.OutcomeNegative) -} - -// Looks through the data and validates that each changeset has been approved at least once. -func reviewedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string, - positiveOutcome, negativeOutcome finding.Outcome, -) ([]finding.Finding, string, error) { - changesets := reviewData.DefaultBranchChangesets - var findings []finding.Finding - foundHumanActivity := false - nUnreviewedChangesets := 0 - nChangesets := len(changesets) - nChanges := 0 - if nChangesets == 0 { - return nil, probeID, utils.NoChangesetsErr - } - for x := range changesets { - data := &changesets[x] - reviewedChangeset := false - if len(data.Reviews) > 0 { - reviewedChangeset = true - } - if reviewedChangeset && data.Author.IsBot { - continue - } - nChanges += 1 - if !data.Author.IsBot { - foundHumanActivity = true - } - if !reviewedChangeset { - nUnreviewedChangesets += 1 - } - } - switch { - case !foundHumanActivity: - // returns a NotAvailable outcome if all changesets were authored by bots - f, err := finding.NewNotAvailable(fs, probeID, fmt.Sprintf("Found no human activity "+ - "in the last %d changesets", nChangesets), nil) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - return findings, probeID, nil - case nUnreviewedChangesets > 0: - // returns NegativeOutcome if some changesets did not have review activity - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("Not all changesets have review activity. "+ - "Found %d unreviewed changesets of %d.", nUnreviewedChangesets, nChanges), nil, negativeOutcome) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - default: - // returns PositiveOutcome if all changesets had review activity - f, err := finding.NewWith(fs, probeID, fmt.Sprintf("All %d changesets have review activity.", - nChangesets), nil, positiveOutcome) - if err != nil { - return nil, probeID, fmt.Errorf("create finding: %w", err) - } - findings = append(findings, *f) - } - return findings, probeID, nil -} From 202c0dfddefdbcb7ab3c8210ad6a16dd2bd5115a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Backman?= Date: Fri, 18 Aug 2023 12:23:08 +0300 Subject: [PATCH 118/125] removed redundant probe codeReviewed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Backman --- probes/entries.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/probes/entries.go b/probes/entries.go index aa801222007..f5b45bda99b 100644 --- a/probes/entries.go +++ b/probes/entries.go @@ -20,7 +20,6 @@ import ( "github.com/ossf/scorecard/v4/finding" "github.com/ossf/scorecard/v4/probes/codeApproved" "github.com/ossf/scorecard/v4/probes/codeReviewTwoReviewers" - "github.com/ossf/scorecard/v4/probes/codeReviewed" "github.com/ossf/scorecard/v4/probes/securityPolicyContainsLinks" "github.com/ossf/scorecard/v4/probes/securityPolicyContainsText" "github.com/ossf/scorecard/v4/probes/securityPolicyContainsVulnerabilityDisclosure" @@ -55,7 +54,6 @@ var ( } CodeReview = []ProbeImpl{ codeApproved.Run, - codeReviewed.Run, codeReviewTwoReviewers.Run, } ) From 10be3789295e859c880b4130ab74c16df38f341d Mon Sep 17 00:00:00 2001 From: jitsengupta17 <145664639+jitsengupta17@users.noreply.github.com> Date: Mon, 20 Nov 2023 16:04:18 +0530 Subject: [PATCH 119/125] Update probes/codeApproved/def.yml Co-authored-by: Raghav Kaul <8695110+raghavkaul@users.noreply.github.com> Signed-off-by: jitsengupta17 <145664639+jitsengupta17@users.noreply.github.com> --- probes/codeApproved/def.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/probes/codeApproved/def.yml b/probes/codeApproved/def.yml index 92e80059cb1..1690627cf14 100644 --- a/probes/codeApproved/def.yml +++ b/probes/codeApproved/def.yml @@ -19,7 +19,7 @@ motivation: > To ensure that the review process works, the proposed changes should have a minimum number of approvals. implementation: > - The implementation looks for the reviews of a changeset and that their state is "APPROVED" + This probe looks for whether all changes over the last `--commit-depth` commits have been approved by a maintainer. Commits are grouped by the Pull Request they were introduced in, and each Pull Request must have at least one approval. outcome: - If all changesets were approved, the probe returns OutcomePositive (1) - If a changeset was not approved, the prove returns OutcomeNegative (0) From 7f6c65753d30b21c7815cec72334805e587c463a Mon Sep 17 00:00:00 2001 From: jitsengupta17 <145664639+jitsengupta17@users.noreply.github.com> Date: Mon, 20 Nov 2023 16:04:37 +0530 Subject: [PATCH 120/125] Update probes/codeApproved/def.yml Co-authored-by: Raghav Kaul <8695110+raghavkaul@users.noreply.github.com> Signed-off-by: jitsengupta17 <145664639+jitsengupta17@users.noreply.github.com> --- probes/codeApproved/def.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/probes/codeApproved/def.yml b/probes/codeApproved/def.yml index 1690627cf14..eeb6dd9df0e 100644 --- a/probes/codeApproved/def.yml +++ b/probes/codeApproved/def.yml @@ -21,8 +21,8 @@ motivation: > implementation: > This probe looks for whether all changes over the last `--commit-depth` commits have been approved by a maintainer. Commits are grouped by the Pull Request they were introduced in, and each Pull Request must have at least one approval. outcome: - - If all changesets were approved, the probe returns OutcomePositive (1) - - If a changeset was not approved, the prove returns OutcomeNegative (0) + - If all commits were approved, the probe returns OutcomePositive (1) + - If any commit was not approved, the prove returns OutcomeNegative (0) remediation: effort: Low text: From a1a7bd562fa9fa448e378c7ab9477c4ed9fdfcc6 Mon Sep 17 00:00:00 2001 From: jitsengupta17 <145664639+jitsengupta17@users.noreply.github.com> Date: Mon, 20 Nov 2023 16:05:07 +0530 Subject: [PATCH 121/125] Update probes/codeApproved/def.yml Co-authored-by: Raghav Kaul <8695110+raghavkaul@users.noreply.github.com> Signed-off-by: jitsengupta17 <145664639+jitsengupta17@users.noreply.github.com> --- probes/codeApproved/def.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/probes/codeApproved/def.yml b/probes/codeApproved/def.yml index eeb6dd9df0e..006c2923306 100644 --- a/probes/codeApproved/def.yml +++ b/probes/codeApproved/def.yml @@ -26,6 +26,6 @@ outcome: remediation: effort: Low text: - - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. + - Follow the instructions at https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. markdown: - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. From 094d54ad1ba1a58ef3296998d4165a463904c8f0 Mon Sep 17 00:00:00 2001 From: jitsengupta17 <145664639+jitsengupta17@users.noreply.github.com> Date: Mon, 20 Nov 2023 16:05:29 +0530 Subject: [PATCH 122/125] Update probes/codeApproved/def.yml Co-authored-by: Raghav Kaul <8695110+raghavkaul@users.noreply.github.com> Signed-off-by: jitsengupta17 <145664639+jitsengupta17@users.noreply.github.com> --- probes/codeApproved/def.yml | 2 +- probes/codeApproved/impl.go | 2 +- probes/codeReviewOneReviewers/impl.go | 6 +++--- probes/utils/codeReview.go | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/probes/codeApproved/def.yml b/probes/codeApproved/def.yml index 006c2923306..4a736d9c471 100644 --- a/probes/codeApproved/def.yml +++ b/probes/codeApproved/def.yml @@ -28,4 +28,4 @@ remediation: text: - Follow the instructions at https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. markdown: - - Follow the instructions https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews. + - Follow the instructions [here](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/approving-a-pull-request-with-required-reviews) to review pull requests before merge. diff --git a/probes/codeApproved/impl.go b/probes/codeApproved/impl.go index 17b58e98383..107250a3e45 100644 --- a/probes/codeApproved/impl.go +++ b/probes/codeApproved/impl.go @@ -45,7 +45,7 @@ func approvedRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID string nChanges := 0 nUnapprovedChangesets := 0 if nChangesets == 0 { - return nil, probeID, utils.NoChangesetsErr + return nil, probeID, utils.ErrNoChangesets } for x := range changesets { data := &changesets[x] diff --git a/probes/codeReviewOneReviewers/impl.go b/probes/codeReviewOneReviewers/impl.go index 4bf76baf282..a3c4f09ebe7 100644 --- a/probes/codeReviewOneReviewers/impl.go +++ b/probes/codeReviewOneReviewers/impl.go @@ -28,7 +28,7 @@ import ( var ( //go:embed *.yml fs embed.FS - reviewerLoginErr = fmt.Errorf("could not find the login of a reviewer") + ErrReviewerLogin = fmt.Errorf("could not find the login of a reviewer") ) const ( @@ -55,7 +55,7 @@ func codeReviewRun(reviewData *checker.CodeReviewData, fs embed.FS, probeID stri leastFoundReviewers := 0 nChangesets := len(changesets) if nChangesets == 0 { - return nil, probeID, utils.NoChangesetsErr + return nil, probeID, utils.ErrNoChangesets } // Loops through all changesets, if an author login cannot be retrieved: returns OutcomeNotAvailabe. // leastFoundReviewers will be the lowest number of unique reviewers found among the changesets. @@ -119,7 +119,7 @@ func uniqueReviewers(changesetAuthor string, reviews []clients.Review) (int, err reviewersList := make(map[string]bool) for i := range reviews { if reviews[i].Author.Login == "" { - return 0, reviewerLoginErr + return 0, ErrReviewerLogin } if !reviewersList[reviews[i].Author.Login] && reviews[i].Author.Login != changesetAuthor { reviewersList[reviews[i].Author.Login] = true diff --git a/probes/utils/codeReview.go b/probes/utils/codeReview.go index c0e90c76f02..69e2a7c6379 100644 --- a/probes/utils/codeReview.go +++ b/probes/utils/codeReview.go @@ -17,4 +17,4 @@ package utils import "fmt" // nolint:stylecheck -var NoChangesetsErr = fmt.Errorf("no changesets found") +var ErrNoChangesets = fmt.Errorf("no changesets found") From 0ca2ee1e3bee55b58ae1962e98901f43c208ee96 Mon Sep 17 00:00:00 2001 From: jitsengupta17 <145664639+jitsengupta17@users.noreply.github.com> Date: Wed, 29 Nov 2023 14:46:32 +0530 Subject: [PATCH 123/125] Update probes/codeApproved/def.yml Co-authored-by: Raghav Kaul <8695110+raghavkaul@users.noreply.github.com> Signed-off-by: jitsengupta17 <145664639+jitsengupta17@users.noreply.github.com> --- probes/codeApproved/def.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/probes/codeApproved/def.yml b/probes/codeApproved/def.yml index 4a736d9c471..7bd82284a04 100644 --- a/probes/codeApproved/def.yml +++ b/probes/codeApproved/def.yml @@ -19,7 +19,7 @@ motivation: > To ensure that the review process works, the proposed changes should have a minimum number of approvals. implementation: > - This probe looks for whether all changes over the last `--commit-depth` commits have been approved by a maintainer. Commits are grouped by the Pull Request they were introduced in, and each Pull Request must have at least one approval. + This probe looks for whether all changes over the last `--commit-depth` commits have been approved before merge. Commits are grouped by the Pull Request they were introduced in, and each Pull Request must have at least one approval. outcome: - If all commits were approved, the probe returns OutcomePositive (1) - If any commit was not approved, the prove returns OutcomeNegative (0) From 92d1df42a401e80dc26b8fac28c63f1836fb67ec Mon Sep 17 00:00:00 2001 From: jitsengupta17 <145664639+jitsengupta17@users.noreply.github.com> Date: Wed, 29 Nov 2023 14:46:54 +0530 Subject: [PATCH 124/125] Update probes/codeReviewOneReviewers/def.yml Co-authored-by: Raghav Kaul <8695110+raghavkaul@users.noreply.github.com> Signed-off-by: jitsengupta17 <145664639+jitsengupta17@users.noreply.github.com> --- probes/codeReviewOneReviewers/def.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/probes/codeReviewOneReviewers/def.yml b/probes/codeReviewOneReviewers/def.yml index e397abb4382..0facc007fb2 100644 --- a/probes/codeReviewOneReviewers/def.yml +++ b/probes/codeReviewOneReviewers/def.yml @@ -18,7 +18,8 @@ motivation: > To ensure that the review process works, the proposed changes should have a minimum number of approvals. implementation: > - The implementation looks for the number of reviewers for the last few changesets. +This probe looks for whether all changes over the last `--commit-depth` commits have been approved by a minimum number of reviewers. +Commits are grouped by the Pull Request they were introduced in. Only unique reviewer logins that aren't the same as the changeset author are counted. outcome: - If all the changes had at least one reviewers, the probe returns OutcomePositive (1) From 5ffd59c77fa764119b94f50ac0618de89d4d3392 Mon Sep 17 00:00:00 2001 From: Raghav Kaul Date: Fri, 26 Jan 2024 19:07:46 +0000 Subject: [PATCH 125/125] Lint Signed-off-by: Raghav Kaul --- probes/codeApproved/impl_test.go | 2 +- probes/codeReviewOneReviewers/impl_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/probes/codeApproved/impl_test.go b/probes/codeApproved/impl_test.go index 75e3b201e1f..567851f2963 100644 --- a/probes/codeApproved/impl_test.go +++ b/probes/codeApproved/impl_test.go @@ -343,4 +343,4 @@ func TestProbeCodeApproved(t *testing.T) { } }) } -} \ No newline at end of file +} diff --git a/probes/codeReviewOneReviewers/impl_test.go b/probes/codeReviewOneReviewers/impl_test.go index c5ec0ec2ce1..45e2a1d7a81 100644 --- a/probes/codeReviewOneReviewers/impl_test.go +++ b/probes/codeReviewOneReviewers/impl_test.go @@ -336,4 +336,4 @@ func TestProbeCodeReviewOneReviewers(t *testing.T) { } }) } -} \ No newline at end of file +}