diff options
author | Patrick Steinhardt <psteinhardt@gitlab.com> | 2022-05-06 12:53:19 +0300 |
---|---|---|
committer | Patrick Steinhardt <psteinhardt@gitlab.com> | 2022-05-06 12:53:19 +0300 |
commit | 8ae895ecfb56ce7c19a225dea3fc2995f65c1cda (patch) | |
tree | e5cd1904100345316a74e6920a623cefaec949c6 | |
parent | 75db0aacda6a2db06bfe221aaffb2aadf4846118 (diff) | |
parent | d2b85cd7dc10dc00e5255772b083a3559a3a8618 (diff) |
Merge branch 'pks-makefile-protoc-plugin-fixes' into 'master'
Makefile: Fix protoc linting not working
See merge request gitlab-org/gitaly!4515
-rw-r--r-- | Makefile | 47 | ||||
-rw-r--r-- | NOTICE | 324 | ||||
-rw-r--r-- | proto/README.md | 4 | ||||
-rw-r--r-- | proto/go/internal/linter/lint_test.go | 79 | ||||
-rw-r--r-- | tools/module-updater/main.go (renamed from _support/module-updater/main.go) | 26 | ||||
-rw-r--r-- | tools/noticegen/notice.template (renamed from _support/noticegen/notice.template) | 0 | ||||
-rw-r--r-- | tools/noticegen/noticegen.go (renamed from _support/noticegen/noticegen.go) | 4 | ||||
-rw-r--r-- | tools/protoc-gen-gitaly-lint/lint.go (renamed from proto/go/internal/linter/lint.go) | 2 | ||||
-rw-r--r-- | tools/protoc-gen-gitaly-lint/lint_test.go | 79 | ||||
-rw-r--r-- | tools/protoc-gen-gitaly-lint/main.go | 107 | ||||
-rw-r--r-- | tools/protoc-gen-gitaly-lint/method.go (renamed from proto/go/internal/linter/method.go) | 2 | ||||
-rw-r--r-- | tools/protoc-gen-gitaly-lint/testdata/invalid.pb.go (renamed from proto/go/internal/linter/testdata/invalid.pb.go) | 588 | ||||
-rw-r--r-- | tools/protoc-gen-gitaly-lint/testdata/invalid.proto (renamed from proto/go/internal/linter/testdata/invalid.proto) | 2 | ||||
-rw-r--r-- | tools/protoc-gen-gitaly-lint/testdata/invalid_grpc.pb.go (renamed from proto/go/internal/linter/testdata/invalid_grpc.pb.go) | 4 | ||||
-rw-r--r-- | tools/protoc-gen-gitaly-lint/testdata/valid.pb.go (renamed from proto/go/internal/linter/testdata/valid.pb.go) | 374 | ||||
-rw-r--r-- | tools/protoc-gen-gitaly-lint/testdata/valid.proto (renamed from proto/go/internal/linter/testdata/valid.proto) | 2 | ||||
-rw-r--r-- | tools/protoc-gen-gitaly-lint/testdata/valid_grpc.pb.go (renamed from proto/go/internal/linter/testdata/valid_grpc.pb.go) | 4 | ||||
-rw-r--r-- | tools/protoc-gen-gitaly-protolist/main.go (renamed from proto/go/internal/cmd/protoc-gen-gitaly/main.go) | 93 |
18 files changed, 727 insertions, 1014 deletions
@@ -45,18 +45,19 @@ GIT_PREFIX ?= ${GIT_DEFAULT_PREFIX} FIPS_MODE ?= 0 # Tools -GIT := $(shell command -v git) -GOIMPORTS := ${TOOLS_DIR}/goimports -GOFUMPT := ${TOOLS_DIR}/gofumpt -GOLANGCI_LINT := ${TOOLS_DIR}/golangci-lint -PROTOLINT := ${TOOLS_DIR}/protolint -GO_LICENSES := ${TOOLS_DIR}/go-licenses -PROTOC := ${TOOLS_DIR}/protoc -PROTOC_GEN_GO := ${TOOLS_DIR}/protoc-gen-go -PROTOC_GEN_GO_GRPC:= ${TOOLS_DIR}/protoc-gen-go-grpc -PROTOC_GEN_GITALY := ${TOOLS_DIR}/protoc-gen-gitaly -GOTESTSUM := ${TOOLS_DIR}/gotestsum -GOCOVER_COBERTURA := ${TOOLS_DIR}/gocover-cobertura +GIT := $(shell command -v git) +GOIMPORTS := ${TOOLS_DIR}/goimports +GOFUMPT := ${TOOLS_DIR}/gofumpt +GOLANGCI_LINT := ${TOOLS_DIR}/golangci-lint +PROTOLINT := ${TOOLS_DIR}/protolint +GO_LICENSES := ${TOOLS_DIR}/go-licenses +PROTOC := ${TOOLS_DIR}/protoc +PROTOC_GEN_GO := ${TOOLS_DIR}/protoc-gen-go +PROTOC_GEN_GO_GRPC := ${TOOLS_DIR}/protoc-gen-go-grpc +PROTOC_GEN_GITALY_LINT := ${TOOLS_DIR}/protoc-gen-gitaly-lint +PROTOC_GEN_GITALY_PROTOLIST := ${TOOLS_DIR}/protoc-gen-gitaly-protolist +GOTESTSUM := ${TOOLS_DIR}/gotestsum +GOCOVER_COBERTURA := ${TOOLS_DIR}/gocover-cobertura # Tool options GOLANGCI_LINT_OPTIONS ?= @@ -439,11 +440,11 @@ cover: prepare-tests libgit2 ${GOCOVER_COBERTURA} .PHONY: proto ## Regenerate protobuf definitions. -proto: SHARED_PROTOC_OPTS = --plugin=${PROTOC_GEN_GO} --plugin=${PROTOC_GEN_GO_GRPC} --plugin=${PROTOC_GEN_GITALY} --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative -proto: ${PROTOC} ${PROTOC_GEN_GO} ${PROTOC_GEN_GO_GRPC} ${PROTOC_GEN_GITALY} ${SOURCE_DIR}/.ruby-bundle +proto: SHARED_PROTOC_OPTS = --plugin=${PROTOC_GEN_GO} --plugin=${PROTOC_GEN_GO_GRPC} --plugin=${PROTOC_GEN_GITALY_PROTOLIST} --go_opt=paths=source_relative --go-grpc_opt=paths=source_relative +proto: ${PROTOC} ${PROTOC_GEN_GO} ${PROTOC_GEN_GO_GRPC} ${PROTOC_GEN_GITALY_PROTOLIST} ${SOURCE_DIR}/.ruby-bundle ${Q}mkdir -p ${SOURCE_DIR}/proto/go/gitalypb ${Q}rm -f ${SOURCE_DIR}/proto/go/gitalypb/*.pb.go - ${PROTOC} ${SHARED_PROTOC_OPTS} -I ${SOURCE_DIR}/proto -I ${PROTOC_INSTALL_DIR}/include --go_out=${SOURCE_DIR}/proto/go/gitalypb --go-grpc_out=${SOURCE_DIR}/proto/go/gitalypb ${SOURCE_DIR}/proto/*.proto + ${PROTOC} ${SHARED_PROTOC_OPTS} -I ${SOURCE_DIR}/proto -I ${PROTOC_INSTALL_DIR}/include --go_out=${SOURCE_DIR}/proto/go/gitalypb --gitaly-protolist_out=proto_dir=${SOURCE_DIR}/proto,gitalypb_dir=${SOURCE_DIR}/proto/go/gitalypb:${SOURCE_DIR} --go-grpc_out=${SOURCE_DIR}/proto/go/gitalypb ${SOURCE_DIR}/proto/*.proto ${SOURCE_DIR}/_support/generate-proto-ruby @ # this part is related to the generation of sources from testing proto files ${PROTOC} ${SHARED_PROTOC_OPTS} -I ${SOURCE_DIR}/internal --go_out=${SOURCE_DIR}/internal --go-grpc_out=${SOURCE_DIR}/internal ${SOURCE_DIR}/internal/praefect/grpc-proxy/testdata/test.proto @@ -452,13 +453,14 @@ proto: ${PROTOC} ${PROTOC_GEN_GO} ${PROTOC_GEN_GO_GRPC} ${PROTOC_GEN_GITALY} ${S ${SOURCE_DIR}/internal/middleware/cache/testdata/stream.proto \ ${SOURCE_DIR}/internal/helper/chunk/testdata/test.proto \ ${SOURCE_DIR}/internal/middleware/limithandler/testdata/test.proto - ${PROTOC} ${SHARED_PROTOC_OPTS} -I ${SOURCE_DIR}/proto -I ${PROTOC_INSTALL_DIR}/include --go_out=${SOURCE_DIR}/proto --go-grpc_out=${SOURCE_DIR}/proto ${SOURCE_DIR}/proto/go/internal/linter/testdata/*.proto + ${PROTOC} ${SHARED_PROTOC_OPTS} -I ${SOURCE_DIR}/proto -I ${SOURCE_DIR}/tools -I ${PROTOC_INSTALL_DIR}/include --go_out=${SOURCE_DIR}/tools --go-grpc_out=${SOURCE_DIR}/tools ${SOURCE_DIR}/tools/protoc-gen-gitaly-lint/testdata/*.proto .PHONY: check-proto check-proto: proto no-proto-changes lint-proto .PHONY: lint-proto -lint-proto: ${PROTOLINT} +lint-proto: ${PROTOC} ${PROTOLINT} ${PROTOC_GEN_GITALY_LINT} + ${Q}${PROTOC} -I ${SOURCE_DIR}/proto -I ${PROTOC_INSTALL_DIR}/include --plugin=${PROTOC_GEN_GITALY_LINT} --gitaly-lint_out=${SOURCE_DIR} ${SOURCE_DIR}/proto/*.proto ${Q}${PROTOLINT} lint -config_dir_path=${SOURCE_DIR}/proto ${SOURCE_DIR}/proto .PHONY: no-changes @@ -476,7 +478,7 @@ dump-database-schema: build .PHONY: upgrade-module upgrade-module: - ${Q}go run ${SOURCE_DIR}/_support/module-updater/main.go -dir . -from=${FROM_MODULE} -to=${TO_MODULE} + ${Q}go run ${SOURCE_DIR}/tools/module-updater/main.go -dir . -from=${FROM_MODULE} -to=${TO_MODULE} ${Q}${MAKE} proto .PHONY: git @@ -500,7 +502,7 @@ ${SOURCE_DIR}/NOTICE: ${BUILD_DIR}/NOTICE ${BUILD_DIR}/NOTICE: ${GO_LICENSES} clean-ruby-vendor-go ${Q}rm -rf ${BUILD_DIR}/licenses ${Q}GOOS=linux GOFLAGS="-tags=${SERVER_BUILD_TAGS},${GIT2GO_BUILD_TAGS}" ${GO_LICENSES} save ${SOURCE_DIR}/... --save_path=${BUILD_DIR}/licenses - ${Q}go run ${SOURCE_DIR}/_support/noticegen/noticegen.go -source ${BUILD_DIR}/licenses -template ${SOURCE_DIR}/_support/noticegen/notice.template > ${BUILD_DIR}/NOTICE + ${Q}go run ${SOURCE_DIR}/tools/noticegen/noticegen.go -source ${BUILD_DIR}/licenses -template ${SOURCE_DIR}/tools/noticegen/notice.template > ${BUILD_DIR}/NOTICE ${BUILD_DIR}: ${Q}mkdir -p ${BUILD_DIR} @@ -605,8 +607,11 @@ ${TOOLS_DIR}/%: GOBIN = ${TOOLS_DIR} ${TOOLS_DIR}/%: ${TOOLS_DIR}/%.version ${Q}go install ${TOOL_PACKAGE}@${TOOL_VERSION} -${PROTOC_GEN_GITALY}: proto | ${TOOLS_DIR} - ${Q}go build -o $@ ${SOURCE_DIR}/proto/go/internal/cmd/protoc-gen-gitaly +${PROTOC_GEN_GITALY_LINT}: proto | ${TOOLS_DIR} + ${Q}go build -o $@ ${SOURCE_DIR}/tools/protoc-gen-gitaly-lint + +${PROTOC_GEN_GITALY_PROTOLIST}: | ${TOOLS_DIR} + ${Q}go build -o $@ ${SOURCE_DIR}/tools/protoc-gen-gitaly-protolist # External tools ${GOCOVER_COBERTURA}: TOOL_PACKAGE = github.com/t-yuki/gocover-cobertura @@ -15364,330 +15364,6 @@ LICENSE - github.com/xanzy/ssh-agent ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -license_test.go - gitlab.com/gitlab-org/gitaly/v14/internal/gitaly/service/repository -package repository - -import ( - "context" - "os" - "testing" - - "github.com/stretchr/testify/require" - "gitlab.com/gitlab-org/gitaly/v14/internal/git/gittest" - "gitlab.com/gitlab-org/gitaly/v14/internal/gitaly/config" - "gitlab.com/gitlab-org/gitaly/v14/internal/gitaly/rubyserver" - "gitlab.com/gitlab-org/gitaly/v14/internal/metadata/featureflag" - "gitlab.com/gitlab-org/gitaly/v14/internal/testhelper" - "gitlab.com/gitlab-org/gitaly/v14/proto/go/gitalypb" -) - -func testSuccessfulFindLicenseRequest(t *testing.T, cfg config.Cfg, client gitalypb.RepositoryServiceClient, rubySrv *rubyserver.Server) { - testhelper.NewFeatureSets(featureflag.GoFindLicense).Run(t, func(t *testing.T, ctx context.Context) { - for _, tc := range []struct { - desc string - nonExistentRepository bool - files map[string]string - expectedLicense string - errorContains string - }{ - { - desc: "repository does not exist", - nonExistentRepository: true, - errorContains: "rpc error: code = NotFound desc = GetRepoPath: not a git repository", - }, - { - desc: "empty if no license file in repo", - files: map[string]string{ - "README.md": "readme content", - }, - expectedLicense: "", - }, - { - desc: "high confidence mit result and less confident mit-0 result", - files: map[string]string{ - "LICENSE": `MIT License - -Copyright (c) [year] [fullname] - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE.`, - }, - expectedLicense: "mit", - }, - { - desc: "unknown license", - files: map[string]string{ - "LICENSE.md": "this doesn't match any known license", - }, - expectedLicense: "other", - }, - } { - t.Run(tc.desc, func(t *testing.T) { - repo, repoPath := gittest.CreateRepository(ctx, t, cfg) - - var treeEntries []gittest.TreeEntry - for file, content := range tc.files { - treeEntries = append(treeEntries, gittest.TreeEntry{ - Mode: "100644", - Path: file, - Content: content, - }) - } - - gittest.WriteCommit(t, cfg, repoPath, gittest.WithBranch("main"), gittest.WithTreeEntries(treeEntries...), gittest.WithParents()) - - if tc.nonExistentRepository { - require.NoError(t, os.RemoveAll(repoPath)) - } - - resp, err := client.FindLicense(ctx, &gitalypb.FindLicenseRequest{Repository: repo}) - if tc.errorContains != "" { - require.Error(t, err) - require.Contains(t, err.Error(), tc.errorContains) - return - } - - require.NoError(t, err) - testhelper.ProtoEqual(t, &gitalypb.FindLicenseResponse{ - LicenseShortName: tc.expectedLicense, - }, resp) - }) - } - }) -} - -func testFindLicenseRequestEmptyRepo(t *testing.T, cfg config.Cfg, client gitalypb.RepositoryServiceClient, rubySrv *rubyserver.Server) { - testhelper.NewFeatureSets(featureflag.GoFindLicense).Run(t, func(t *testing.T, ctx context.Context) { - repo, repoPath := gittest.InitRepo(t, cfg, cfg.Storages[0]) - require.NoError(t, os.RemoveAll(repoPath)) - - _, err := client.CreateRepository(ctx, &gitalypb.CreateRepositoryRequest{Repository: repo}) - require.NoError(t, err) - - resp, err := client.FindLicense(ctx, &gitalypb.FindLicenseRequest{Repository: repo}) - require.NoError(t, err) - - require.Empty(t, resp.GetLicenseShortName()) - }) -} - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -LICENSE - gitlab.com/gitlab-org/gitaly/v14/internal/middleware/panichandler -Copyright (c) 2016 Masahiro Sano - -MIT License - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -LICENSE.txt - gitlab.com/gitlab-org/gitaly/v14/internal/praefect/grpc-proxy/proxy - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ LICENSE - gitlab.com/gitlab-org/gitlab-shell/client Copyright (c) 2011-2018 GitLab B.V. diff --git a/proto/README.md b/proto/README.md index 933233f43..3fd40b5fc 100644 --- a/proto/README.md +++ b/proto/README.md @@ -258,8 +258,8 @@ message. The additional repository is annotated similarly to target repository but annotation is named `additional_repository` -See our examples of [valid](go/internal/linter/testdata/valid.proto) and -[invalid](go/internal/linter/testdata/invalid.proto) proto annotations. +See our examples of [valid](go/internal/cmd/protoc-gen-gitaly-lint/testdata/valid.proto) and +[invalid](go/internal/cmd/protoc-gen-gitaly-lint/invalid.proto) proto annotations. ### Go Package diff --git a/proto/go/internal/linter/lint_test.go b/proto/go/internal/linter/lint_test.go deleted file mode 100644 index 5747b3893..000000000 --- a/proto/go/internal/linter/lint_test.go +++ /dev/null @@ -1,79 +0,0 @@ -package linter - -import ( - "errors" - "testing" - - "github.com/stretchr/testify/require" - _ "gitlab.com/gitlab-org/gitaly/v14/proto/go/internal/linter/testdata" - "google.golang.org/protobuf/reflect/protodesc" - protoreg "google.golang.org/protobuf/reflect/protoregistry" - "google.golang.org/protobuf/types/descriptorpb" - "google.golang.org/protobuf/types/pluginpb" -) - -func TestLintFile(t *testing.T) { - for _, tt := range []struct { - protoPath string - errs []error - }{ - { - protoPath: "go/internal/linter/testdata/valid.proto", - errs: nil, - }, - { - protoPath: "go/internal/linter/testdata/invalid.proto", - errs: []error{ - formatError("go/internal/linter/testdata/invalid.proto", "InterceptedWithOperationType", "InvalidMethod", errors.New("operation type defined on an intercepted method")), - formatError("go/internal/linter/testdata/invalid.proto", "InvalidService", "InvalidMethod0", errors.New("missing op_type extension")), - formatError("go/internal/linter/testdata/invalid.proto", "InvalidService", "InvalidMethod1", errors.New("op set to UNKNOWN")), - formatError("go/internal/linter/testdata/invalid.proto", "InvalidService", "InvalidMethod2", errors.New("unexpected count of target_repository fields 0, expected 1, found target_repository label at: []")), - formatError("go/internal/linter/testdata/invalid.proto", "InvalidService", "InvalidMethod4", errors.New("unexpected count of target_repository fields 0, expected 1, found target_repository label at: []")), - formatError("go/internal/linter/testdata/invalid.proto", "InvalidService", "InvalidMethod5", errors.New("wrong type of field RequestWithWrongTypeRepository.header.repository, expected .gitaly.Repository, got .test.InvalidMethodResponse")), - formatError("go/internal/linter/testdata/invalid.proto", "InvalidService", "InvalidMethod6", errors.New("unexpected count of target_repository fields 0, expected 1, found target_repository label at: []")), - formatError("go/internal/linter/testdata/invalid.proto", "InvalidService", "InvalidMethod7", errors.New("unexpected count of target_repository fields 0, expected 1, found target_repository label at: []")), - formatError("go/internal/linter/testdata/invalid.proto", "InvalidService", "InvalidMethod8", errors.New("unexpected count of target_repository fields 0, expected 1, found target_repository label at: []")), - formatError("go/internal/linter/testdata/invalid.proto", "InvalidService", "InvalidMethod9", errors.New("unexpected count of target_repository fields 1, expected 0, found target_repository label at: [InvalidMethodRequestWithRepo.destination]")), - formatError("go/internal/linter/testdata/invalid.proto", "InvalidService", "InvalidMethod10", errors.New("unexpected count of storage field 1, expected 0, found storage label at: [RequestWithStorageAndRepo.storage_name]")), - formatError("go/internal/linter/testdata/invalid.proto", "InvalidService", "InvalidMethod11", errors.New("unexpected count of storage field 1, expected 0, found storage label at: [RequestWithNestedStorageAndRepo.inner_message.storage_name]")), - formatError("go/internal/linter/testdata/invalid.proto", "InvalidService", "InvalidMethod13", errors.New("unexpected count of storage field 0, expected 1, found storage label at: []")), - formatError("go/internal/linter/testdata/invalid.proto", "InvalidService", "InvalidMethod14", errors.New("unexpected count of storage field 2, expected 1, found storage label at: [RequestWithMultipleNestedStorage.inner_message.storage_name RequestWithMultipleNestedStorage.storage_name]")), - formatError("go/internal/linter/testdata/invalid.proto", "InvalidService", "InvalidMethod15", errors.New("operation type defined on an intercepted method")), - formatError("go/internal/linter/testdata/invalid.proto", "InvalidService", "MaintenanceWithMissingRepository", errors.New("unexpected count of target_repository fields 0, expected 1, found target_repository label at: []")), - formatError("go/internal/linter/testdata/invalid.proto", "InvalidService", "MaintenanceWithUnflaggedRepository", errors.New("unexpected count of target_repository fields 0, expected 1, found target_repository label at: []")), - formatError("go/internal/linter/testdata/invalid.proto", "InvalidService", "MaintenanceWithWrongNestedRepositoryType", errors.New("wrong type of field RequestWithWrongTypeRepository.header.repository, expected .gitaly.Repository, got .test.InvalidMethodResponse")), - formatError("go/internal/linter/testdata/invalid.proto", "InvalidService", "MaintenanceWithInvalidTargetType", errors.New("unexpected count of target_repository fields 0, expected 1, found target_repository label at: []")), - formatError("go/internal/linter/testdata/invalid.proto", "InvalidService", "MaintenanceWithInvalidNestedRequest", errors.New("unexpected count of target_repository fields 0, expected 1, found target_repository label at: []")), - formatError("go/internal/linter/testdata/invalid.proto", "InvalidService", "MaintenanceWithStorageAndRepository", errors.New("unexpected count of storage field 1, expected 0, found storage label at: [RequestWithStorageAndRepo.storage_name]")), - formatError("go/internal/linter/testdata/invalid.proto", "InvalidService", "MaintenanceWithNestedStorageAndRepository", errors.New("unexpected count of storage field 1, expected 0, found storage label at: [RequestWithNestedStorageAndRepo.inner_message.storage_name]")), - formatError("go/internal/linter/testdata/invalid.proto", "InvalidService", "MaintenanceWithStorageScope", errors.New("unknown operation scope level 2")), - }, - }, - } { - t.Run(tt.protoPath, func(t *testing.T) { - fd, err := protoreg.GlobalFiles.FindFileByPath(tt.protoPath) - require.NoError(t, err) - - fdToCheck := protodesc.ToFileDescriptorProto(fd) - req := &pluginpb.CodeGeneratorRequest{ - ProtoFile: []*descriptorpb.FileDescriptorProto{fdToCheck}, - } - - for _, protoPath := range []string{ - // as we have no input stream we can use to create CodeGeneratorRequest - // we must create it by hands with all required dependencies loaded - "google/protobuf/descriptor.proto", - "google/protobuf/timestamp.proto", - "lint.proto", - "shared.proto", - } { - fd, err := protoreg.GlobalFiles.FindFileByPath(protoPath) - require.NoError(t, err) - req.ProtoFile = append(req.ProtoFile, protodesc.ToFileDescriptorProto(fd)) - } - - errs := LintFile(fdToCheck, req) - require.Equal(t, tt.errs, errs) - }) - } -} diff --git a/_support/module-updater/main.go b/tools/module-updater/main.go index c58aad535..08c5db2d0 100644 --- a/_support/module-updater/main.go +++ b/tools/module-updater/main.go @@ -18,18 +18,18 @@ import ( ) var skipDirs = map[string]bool{ - ".git": true, - ".gitlab": true, - "_build": true, - "_support": true, - "changelogs": true, - "danger": true, - "doc": true, - "proto/go/gitalypb": true, - "proto/go/internal/linter/testdata": true, - "ruby": true, - "scripts": true, - "unreleased": true, + ".git": true, + ".gitlab": true, + "_build": true, + "_support": true, + "changelogs": true, + "danger": true, + "doc": true, + "proto/go/gitalypb": true, + "ruby": true, + "scripts": true, + "tools/protoc-gen-gitaly-lint/testdata": true, + "unreleased": true, } func main() { @@ -119,7 +119,7 @@ func getModule(modDir string) (string, error) { return "", fmt.Errorf("command %q: %w", strings.Join(cmd.Args, " "), err) } - var modInfo = struct{ Module struct{ Path string } }{} + modInfo := struct{ Module struct{ Path string } }{} if err := json.Unmarshal(data, &modInfo); err != nil { return "", err } diff --git a/_support/noticegen/notice.template b/tools/noticegen/notice.template index 28484c208..28484c208 100644 --- a/_support/noticegen/notice.template +++ b/tools/noticegen/notice.template diff --git a/_support/noticegen/noticegen.go b/tools/noticegen/noticegen.go index 0d54f221a..9d2a9f21b 100644 --- a/_support/noticegen/noticegen.go +++ b/tools/noticegen/noticegen.go @@ -39,7 +39,7 @@ func main() { if err != nil { log.Fatal(err) } - var modInfo = struct { + modInfo := struct { Module struct { Path string } @@ -62,7 +62,7 @@ func main() { } if p == modInfo.Module.Path { - return nil + return filepath.SkipDir } t, err := os.ReadFile(path) diff --git a/proto/go/internal/linter/lint.go b/tools/protoc-gen-gitaly-lint/lint.go index 48eb0f252..901c22946 100644 --- a/proto/go/internal/linter/lint.go +++ b/tools/protoc-gen-gitaly-lint/lint.go @@ -1,4 +1,4 @@ -package linter +package main import ( "errors" diff --git a/tools/protoc-gen-gitaly-lint/lint_test.go b/tools/protoc-gen-gitaly-lint/lint_test.go new file mode 100644 index 000000000..68a8424a4 --- /dev/null +++ b/tools/protoc-gen-gitaly-lint/lint_test.go @@ -0,0 +1,79 @@ +package main + +import ( + "errors" + "testing" + + "github.com/stretchr/testify/require" + _ "gitlab.com/gitlab-org/gitaly/v14/tools/protoc-gen-gitaly-lint/testdata" + "google.golang.org/protobuf/reflect/protodesc" + protoreg "google.golang.org/protobuf/reflect/protoregistry" + "google.golang.org/protobuf/types/descriptorpb" + "google.golang.org/protobuf/types/pluginpb" +) + +func TestLintFile(t *testing.T) { + for _, tt := range []struct { + protoPath string + errs []error + }{ + { + protoPath: "protoc-gen-gitaly-lint/testdata/valid.proto", + errs: nil, + }, + { + protoPath: "protoc-gen-gitaly-lint/testdata/invalid.proto", + errs: []error{ + formatError("protoc-gen-gitaly-lint/testdata/invalid.proto", "InterceptedWithOperationType", "InvalidMethod", errors.New("operation type defined on an intercepted method")), + formatError("protoc-gen-gitaly-lint/testdata/invalid.proto", "InvalidService", "InvalidMethod0", errors.New("missing op_type extension")), + formatError("protoc-gen-gitaly-lint/testdata/invalid.proto", "InvalidService", "InvalidMethod1", errors.New("op set to UNKNOWN")), + formatError("protoc-gen-gitaly-lint/testdata/invalid.proto", "InvalidService", "InvalidMethod2", errors.New("unexpected count of target_repository fields 0, expected 1, found target_repository label at: []")), + formatError("protoc-gen-gitaly-lint/testdata/invalid.proto", "InvalidService", "InvalidMethod4", errors.New("unexpected count of target_repository fields 0, expected 1, found target_repository label at: []")), + formatError("protoc-gen-gitaly-lint/testdata/invalid.proto", "InvalidService", "InvalidMethod5", errors.New("wrong type of field RequestWithWrongTypeRepository.header.repository, expected .gitaly.Repository, got .test.InvalidMethodResponse")), + formatError("protoc-gen-gitaly-lint/testdata/invalid.proto", "InvalidService", "InvalidMethod6", errors.New("unexpected count of target_repository fields 0, expected 1, found target_repository label at: []")), + formatError("protoc-gen-gitaly-lint/testdata/invalid.proto", "InvalidService", "InvalidMethod7", errors.New("unexpected count of target_repository fields 0, expected 1, found target_repository label at: []")), + formatError("protoc-gen-gitaly-lint/testdata/invalid.proto", "InvalidService", "InvalidMethod8", errors.New("unexpected count of target_repository fields 0, expected 1, found target_repository label at: []")), + formatError("protoc-gen-gitaly-lint/testdata/invalid.proto", "InvalidService", "InvalidMethod9", errors.New("unexpected count of target_repository fields 1, expected 0, found target_repository label at: [InvalidMethodRequestWithRepo.destination]")), + formatError("protoc-gen-gitaly-lint/testdata/invalid.proto", "InvalidService", "InvalidMethod10", errors.New("unexpected count of storage field 1, expected 0, found storage label at: [RequestWithStorageAndRepo.storage_name]")), + formatError("protoc-gen-gitaly-lint/testdata/invalid.proto", "InvalidService", "InvalidMethod11", errors.New("unexpected count of storage field 1, expected 0, found storage label at: [RequestWithNestedStorageAndRepo.inner_message.storage_name]")), + formatError("protoc-gen-gitaly-lint/testdata/invalid.proto", "InvalidService", "InvalidMethod13", errors.New("unexpected count of storage field 0, expected 1, found storage label at: []")), + formatError("protoc-gen-gitaly-lint/testdata/invalid.proto", "InvalidService", "InvalidMethod14", errors.New("unexpected count of storage field 2, expected 1, found storage label at: [RequestWithMultipleNestedStorage.inner_message.storage_name RequestWithMultipleNestedStorage.storage_name]")), + formatError("protoc-gen-gitaly-lint/testdata/invalid.proto", "InvalidService", "InvalidMethod15", errors.New("operation type defined on an intercepted method")), + formatError("protoc-gen-gitaly-lint/testdata/invalid.proto", "InvalidService", "MaintenanceWithMissingRepository", errors.New("unexpected count of target_repository fields 0, expected 1, found target_repository label at: []")), + formatError("protoc-gen-gitaly-lint/testdata/invalid.proto", "InvalidService", "MaintenanceWithUnflaggedRepository", errors.New("unexpected count of target_repository fields 0, expected 1, found target_repository label at: []")), + formatError("protoc-gen-gitaly-lint/testdata/invalid.proto", "InvalidService", "MaintenanceWithWrongNestedRepositoryType", errors.New("wrong type of field RequestWithWrongTypeRepository.header.repository, expected .gitaly.Repository, got .test.InvalidMethodResponse")), + formatError("protoc-gen-gitaly-lint/testdata/invalid.proto", "InvalidService", "MaintenanceWithInvalidTargetType", errors.New("unexpected count of target_repository fields 0, expected 1, found target_repository label at: []")), + formatError("protoc-gen-gitaly-lint/testdata/invalid.proto", "InvalidService", "MaintenanceWithInvalidNestedRequest", errors.New("unexpected count of target_repository fields 0, expected 1, found target_repository label at: []")), + formatError("protoc-gen-gitaly-lint/testdata/invalid.proto", "InvalidService", "MaintenanceWithStorageAndRepository", errors.New("unexpected count of storage field 1, expected 0, found storage label at: [RequestWithStorageAndRepo.storage_name]")), + formatError("protoc-gen-gitaly-lint/testdata/invalid.proto", "InvalidService", "MaintenanceWithNestedStorageAndRepository", errors.New("unexpected count of storage field 1, expected 0, found storage label at: [RequestWithNestedStorageAndRepo.inner_message.storage_name]")), + formatError("protoc-gen-gitaly-lint/testdata/invalid.proto", "InvalidService", "MaintenanceWithStorageScope", errors.New("unknown operation scope level 2")), + }, + }, + } { + t.Run(tt.protoPath, func(t *testing.T) { + fd, err := protoreg.GlobalFiles.FindFileByPath(tt.protoPath) + require.NoError(t, err) + + fdToCheck := protodesc.ToFileDescriptorProto(fd) + req := &pluginpb.CodeGeneratorRequest{ + ProtoFile: []*descriptorpb.FileDescriptorProto{fdToCheck}, + } + + for _, protoPath := range []string{ + // as we have no input stream we can use to create CodeGeneratorRequest + // we must create it by hands with all required dependencies loaded + "google/protobuf/descriptor.proto", + "google/protobuf/timestamp.proto", + "lint.proto", + "shared.proto", + } { + fd, err := protoreg.GlobalFiles.FindFileByPath(protoPath) + require.NoError(t, err) + req.ProtoFile = append(req.ProtoFile, protodesc.ToFileDescriptorProto(fd)) + } + + errs := LintFile(fdToCheck, req) + require.Equal(t, tt.errs, errs) + }) + } +} diff --git a/tools/protoc-gen-gitaly-lint/main.go b/tools/protoc-gen-gitaly-lint/main.go new file mode 100644 index 000000000..be7de808b --- /dev/null +++ b/tools/protoc-gen-gitaly-lint/main.go @@ -0,0 +1,107 @@ +// Command protoc-gen-gitaly-lint is designed to be used as a protobuf compiler +// plugin to verify Gitaly processes are being followed when writing RPC's. +// +// Usage +// +// The protoc-gen-gitaly linter can be chained into any protoc workflow that +// requires verification that Gitaly RPC guidelines are followed. Typically +// this can be done by adding the following argument to an existing protoc +// command: +// +// --gitaly_lint_out=. +// +// For example, you may add the linter as an argument to the command responsible +// for generating Go code: +// +// protoc --go_out=. --gitaly_lint_out=. *.proto +// +// Or, you can run the Gitaly linter by itself. To try out, run the following +// command while in the project root: +// +// protoc --gitaly_lint_out=. ./go/internal/cmd/protoc-gen-gitaly-lint/testdata/incomplete.proto +// +// You should see some errors printed to screen for improperly written +// RPC's in the incomplete.proto file. +// +// Prerequisites +// +// The protobuf compiler (protoc) can be obtained from the GitHub page: +// https://github.com/protocolbuffers/protobuf/releases +// +// Background +// +// The protobuf compiler accepts plugins to analyze protobuf files and generate +// language specific code. +// +// These plugins require the following executable naming convention: +// +// protoc-gen-$NAME +// +// Where $NAME is the plugin name of the compiler desired. The protobuf compiler +// will search the PATH until an executable with that name is found for a +// desired plugin. For example, the following protoc command: +// +// protoc --gitaly_lint_out=. *.proto +// +// The above will search the PATH for an executable named protoc-gen-gitaly-lint +// +// The plugin accepts a protobuf message in STDIN that describes the parsed +// protobuf files. A response is sent back on STDOUT that contains any errors. +package main + +import ( + "fmt" + "io" + "log" + "os" + "strings" + + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/pluginpb" +) + +func main() { + data, err := io.ReadAll(os.Stdin) + if err != nil { + log.Fatalf("reading input: %s", err) + } + + req := &pluginpb.CodeGeneratorRequest{} + + if err := proto.Unmarshal(data, req); err != nil { + log.Fatalf("parsing input proto: %s", err) + } + + if err := lintProtos(req); err != nil { + log.Fatal(err) + } +} + +func lintProtos(req *pluginpb.CodeGeneratorRequest) error { + var errMsgs []string + for _, pf := range req.GetProtoFile() { + errs := LintFile(pf, req) + for _, err := range errs { + errMsgs = append(errMsgs, err.Error()) + } + } + + resp := &pluginpb.CodeGeneratorResponse{} + + if len(errMsgs) > 0 { + errMsg := strings.Join(errMsgs, "\n\t") + resp.Error = &errMsg + } + + // Send back the results. + data, err := proto.Marshal(resp) + if err != nil { + return fmt.Errorf("failed to marshal output proto: %s", err) + } + + _, err = os.Stdout.Write(data) + if err != nil { + return fmt.Errorf("failed to write output proto: %s", err) + } + return nil +} diff --git a/proto/go/internal/linter/method.go b/tools/protoc-gen-gitaly-lint/method.go index b336f7f4f..b1f5c7282 100644 --- a/proto/go/internal/linter/method.go +++ b/tools/protoc-gen-gitaly-lint/method.go @@ -1,4 +1,4 @@ -package linter +package main import ( "errors" diff --git a/proto/go/internal/linter/testdata/invalid.pb.go b/tools/protoc-gen-gitaly-lint/testdata/invalid.pb.go index 1252ad32f..6ab6f2aaa 100644 --- a/proto/go/internal/linter/testdata/invalid.pb.go +++ b/tools/protoc-gen-gitaly-lint/testdata/invalid.pb.go @@ -2,7 +2,7 @@ // versions: // protoc-gen-go v1.26.0 // protoc v3.17.3 -// source: go/internal/linter/testdata/invalid.proto +// source: protoc-gen-gitaly-lint/testdata/invalid.proto package testdata @@ -30,7 +30,7 @@ type InvalidMethodRequest struct { func (x *InvalidMethodRequest) Reset() { *x = InvalidMethodRequest{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[0] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -43,7 +43,7 @@ func (x *InvalidMethodRequest) String() string { func (*InvalidMethodRequest) ProtoMessage() {} func (x *InvalidMethodRequest) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[0] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -56,7 +56,7 @@ func (x *InvalidMethodRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use InvalidMethodRequest.ProtoReflect.Descriptor instead. func (*InvalidMethodRequest) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_invalid_proto_rawDescGZIP(), []int{0} + return file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDescGZIP(), []int{0} } type InvalidMethodRequestWithRepo struct { @@ -70,7 +70,7 @@ type InvalidMethodRequestWithRepo struct { func (x *InvalidMethodRequestWithRepo) Reset() { *x = InvalidMethodRequestWithRepo{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[1] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -83,7 +83,7 @@ func (x *InvalidMethodRequestWithRepo) String() string { func (*InvalidMethodRequestWithRepo) ProtoMessage() {} func (x *InvalidMethodRequestWithRepo) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[1] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -96,7 +96,7 @@ func (x *InvalidMethodRequestWithRepo) ProtoReflect() protoreflect.Message { // Deprecated: Use InvalidMethodRequestWithRepo.ProtoReflect.Descriptor instead. func (*InvalidMethodRequestWithRepo) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_invalid_proto_rawDescGZIP(), []int{1} + return file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDescGZIP(), []int{1} } func (x *InvalidMethodRequestWithRepo) GetDestination() *gitalypb.Repository { @@ -117,7 +117,7 @@ type InvalidTargetType struct { func (x *InvalidTargetType) Reset() { *x = InvalidTargetType{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[2] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -130,7 +130,7 @@ func (x *InvalidTargetType) String() string { func (*InvalidTargetType) ProtoMessage() {} func (x *InvalidTargetType) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[2] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -143,7 +143,7 @@ func (x *InvalidTargetType) ProtoReflect() protoreflect.Message { // Deprecated: Use InvalidTargetType.ProtoReflect.Descriptor instead. func (*InvalidTargetType) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_invalid_proto_rawDescGZIP(), []int{2} + return file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDescGZIP(), []int{2} } func (x *InvalidTargetType) GetWrongType() int32 { @@ -162,7 +162,7 @@ type InvalidMethodResponse struct { func (x *InvalidMethodResponse) Reset() { *x = InvalidMethodResponse{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[3] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -175,7 +175,7 @@ func (x *InvalidMethodResponse) String() string { func (*InvalidMethodResponse) ProtoMessage() {} func (x *InvalidMethodResponse) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[3] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -188,7 +188,7 @@ func (x *InvalidMethodResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use InvalidMethodResponse.ProtoReflect.Descriptor instead. func (*InvalidMethodResponse) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_invalid_proto_rawDescGZIP(), []int{3} + return file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDescGZIP(), []int{3} } type InvalidNestedRequest struct { @@ -202,7 +202,7 @@ type InvalidNestedRequest struct { func (x *InvalidNestedRequest) Reset() { *x = InvalidNestedRequest{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[4] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -215,7 +215,7 @@ func (x *InvalidNestedRequest) String() string { func (*InvalidNestedRequest) ProtoMessage() {} func (x *InvalidNestedRequest) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[4] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -228,7 +228,7 @@ func (x *InvalidNestedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use InvalidNestedRequest.ProtoReflect.Descriptor instead. func (*InvalidNestedRequest) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_invalid_proto_rawDescGZIP(), []int{4} + return file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDescGZIP(), []int{4} } func (x *InvalidNestedRequest) GetInnerMessage() *InvalidTargetType { @@ -250,7 +250,7 @@ type RequestWithStorage struct { func (x *RequestWithStorage) Reset() { *x = RequestWithStorage{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[5] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -263,7 +263,7 @@ func (x *RequestWithStorage) String() string { func (*RequestWithStorage) ProtoMessage() {} func (x *RequestWithStorage) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[5] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -276,7 +276,7 @@ func (x *RequestWithStorage) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestWithStorage.ProtoReflect.Descriptor instead. func (*RequestWithStorage) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_invalid_proto_rawDescGZIP(), []int{5} + return file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDescGZIP(), []int{5} } func (x *RequestWithStorage) GetStorageName() string { @@ -305,7 +305,7 @@ type RequestWithStorageAndRepo struct { func (x *RequestWithStorageAndRepo) Reset() { *x = RequestWithStorageAndRepo{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[6] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -318,7 +318,7 @@ func (x *RequestWithStorageAndRepo) String() string { func (*RequestWithStorageAndRepo) ProtoMessage() {} func (x *RequestWithStorageAndRepo) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[6] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -331,7 +331,7 @@ func (x *RequestWithStorageAndRepo) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestWithStorageAndRepo.ProtoReflect.Descriptor instead. func (*RequestWithStorageAndRepo) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_invalid_proto_rawDescGZIP(), []int{6} + return file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDescGZIP(), []int{6} } func (x *RequestWithStorageAndRepo) GetStorageName() string { @@ -359,7 +359,7 @@ type RequestWithNestedStorageAndRepo struct { func (x *RequestWithNestedStorageAndRepo) Reset() { *x = RequestWithNestedStorageAndRepo{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[7] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -372,7 +372,7 @@ func (x *RequestWithNestedStorageAndRepo) String() string { func (*RequestWithNestedStorageAndRepo) ProtoMessage() {} func (x *RequestWithNestedStorageAndRepo) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[7] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -385,7 +385,7 @@ func (x *RequestWithNestedStorageAndRepo) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestWithNestedStorageAndRepo.ProtoReflect.Descriptor instead. func (*RequestWithNestedStorageAndRepo) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_invalid_proto_rawDescGZIP(), []int{7} + return file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDescGZIP(), []int{7} } func (x *RequestWithNestedStorageAndRepo) GetInnerMessage() *RequestWithStorageAndRepo { @@ -407,7 +407,7 @@ type RequestWithMultipleNestedStorage struct { func (x *RequestWithMultipleNestedStorage) Reset() { *x = RequestWithMultipleNestedStorage{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[8] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -420,7 +420,7 @@ func (x *RequestWithMultipleNestedStorage) String() string { func (*RequestWithMultipleNestedStorage) ProtoMessage() {} func (x *RequestWithMultipleNestedStorage) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[8] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -433,7 +433,7 @@ func (x *RequestWithMultipleNestedStorage) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestWithMultipleNestedStorage.ProtoReflect.Descriptor instead. func (*RequestWithMultipleNestedStorage) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_invalid_proto_rawDescGZIP(), []int{8} + return file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDescGZIP(), []int{8} } func (x *RequestWithMultipleNestedStorage) GetInnerMessage() *RequestWithStorage { @@ -461,7 +461,7 @@ type RequestWithInnerNestedStorage struct { func (x *RequestWithInnerNestedStorage) Reset() { *x = RequestWithInnerNestedStorage{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[9] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -474,7 +474,7 @@ func (x *RequestWithInnerNestedStorage) String() string { func (*RequestWithInnerNestedStorage) ProtoMessage() {} func (x *RequestWithInnerNestedStorage) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[9] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -487,7 +487,7 @@ func (x *RequestWithInnerNestedStorage) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestWithInnerNestedStorage.ProtoReflect.Descriptor instead. func (*RequestWithInnerNestedStorage) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_invalid_proto_rawDescGZIP(), []int{9} + return file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDescGZIP(), []int{9} } func (x *RequestWithInnerNestedStorage) GetHeader() *RequestWithInnerNestedStorage_Header { @@ -508,7 +508,7 @@ type RequestWithWrongTypeRepository struct { func (x *RequestWithWrongTypeRepository) Reset() { *x = RequestWithWrongTypeRepository{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[10] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -521,7 +521,7 @@ func (x *RequestWithWrongTypeRepository) String() string { func (*RequestWithWrongTypeRepository) ProtoMessage() {} func (x *RequestWithWrongTypeRepository) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[10] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -534,7 +534,7 @@ func (x *RequestWithWrongTypeRepository) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestWithWrongTypeRepository.ProtoReflect.Descriptor instead. func (*RequestWithWrongTypeRepository) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_invalid_proto_rawDescGZIP(), []int{10} + return file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDescGZIP(), []int{10} } func (x *RequestWithWrongTypeRepository) GetHeader() *RequestWithWrongTypeRepository_Header { @@ -555,7 +555,7 @@ type RequestWithNestedRepoNotFlagged struct { func (x *RequestWithNestedRepoNotFlagged) Reset() { *x = RequestWithNestedRepoNotFlagged{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[11] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -568,7 +568,7 @@ func (x *RequestWithNestedRepoNotFlagged) String() string { func (*RequestWithNestedRepoNotFlagged) ProtoMessage() {} func (x *RequestWithNestedRepoNotFlagged) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[11] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -581,7 +581,7 @@ func (x *RequestWithNestedRepoNotFlagged) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestWithNestedRepoNotFlagged.ProtoReflect.Descriptor instead. func (*RequestWithNestedRepoNotFlagged) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_invalid_proto_rawDescGZIP(), []int{11} + return file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDescGZIP(), []int{11} } func (x *RequestWithNestedRepoNotFlagged) GetHeader() *RequestWithNestedRepoNotFlagged_Header { @@ -602,7 +602,7 @@ type RequestWithInnerNestedStorage_Header struct { func (x *RequestWithInnerNestedStorage_Header) Reset() { *x = RequestWithInnerNestedStorage_Header{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[12] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -615,7 +615,7 @@ func (x *RequestWithInnerNestedStorage_Header) String() string { func (*RequestWithInnerNestedStorage_Header) ProtoMessage() {} func (x *RequestWithInnerNestedStorage_Header) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[12] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -628,7 +628,7 @@ func (x *RequestWithInnerNestedStorage_Header) ProtoReflect() protoreflect.Messa // Deprecated: Use RequestWithInnerNestedStorage_Header.ProtoReflect.Descriptor instead. func (*RequestWithInnerNestedStorage_Header) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_invalid_proto_rawDescGZIP(), []int{9, 0} + return file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDescGZIP(), []int{9, 0} } func (x *RequestWithInnerNestedStorage_Header) GetStorageName() string { @@ -649,7 +649,7 @@ type RequestWithWrongTypeRepository_Header struct { func (x *RequestWithWrongTypeRepository_Header) Reset() { *x = RequestWithWrongTypeRepository_Header{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[13] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -662,7 +662,7 @@ func (x *RequestWithWrongTypeRepository_Header) String() string { func (*RequestWithWrongTypeRepository_Header) ProtoMessage() {} func (x *RequestWithWrongTypeRepository_Header) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[13] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -675,7 +675,7 @@ func (x *RequestWithWrongTypeRepository_Header) ProtoReflect() protoreflect.Mess // Deprecated: Use RequestWithWrongTypeRepository_Header.ProtoReflect.Descriptor instead. func (*RequestWithWrongTypeRepository_Header) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_invalid_proto_rawDescGZIP(), []int{10, 0} + return file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDescGZIP(), []int{10, 0} } func (x *RequestWithWrongTypeRepository_Header) GetRepository() *InvalidMethodResponse { @@ -696,7 +696,7 @@ type RequestWithNestedRepoNotFlagged_Header struct { func (x *RequestWithNestedRepoNotFlagged_Header) Reset() { *x = RequestWithNestedRepoNotFlagged_Header{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[14] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -709,7 +709,7 @@ func (x *RequestWithNestedRepoNotFlagged_Header) String() string { func (*RequestWithNestedRepoNotFlagged_Header) ProtoMessage() {} func (x *RequestWithNestedRepoNotFlagged_Header) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_invalid_proto_msgTypes[14] + mi := &file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -722,7 +722,7 @@ func (x *RequestWithNestedRepoNotFlagged_Header) ProtoReflect() protoreflect.Mes // Deprecated: Use RequestWithNestedRepoNotFlagged_Header.ProtoReflect.Descriptor instead. func (*RequestWithNestedRepoNotFlagged_Header) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_invalid_proto_rawDescGZIP(), []int{11, 0} + return file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDescGZIP(), []int{11, 0} } func (x *RequestWithNestedRepoNotFlagged_Header) GetRepository() *gitalypb.Repository { @@ -732,256 +732,256 @@ func (x *RequestWithNestedRepoNotFlagged_Header) GetRepository() *gitalypb.Repos return nil } -var File_go_internal_linter_testdata_invalid_proto protoreflect.FileDescriptor - -var file_go_internal_linter_testdata_invalid_proto_rawDesc = []byte{ - 0x0a, 0x29, 0x67, 0x6f, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x6c, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6e, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x74, 0x65, 0x73, - 0x74, 0x1a, 0x0a, 0x6c, 0x69, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0c, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x16, 0x0a, 0x14, 0x49, - 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x22, 0x5a, 0x0a, 0x1c, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x52, - 0x65, 0x70, 0x6f, 0x12, 0x3a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, - 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, - 0x2c, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x38, 0x0a, 0x11, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0a, 0x77, 0x72, 0x6f, 0x6e, 0x67, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x09, - 0x77, 0x72, 0x6f, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x49, 0x6e, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x54, 0x0a, 0x14, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4e, 0x65, 0x73, - 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0d, 0x69, 0x6e, - 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x69, 0x6e, 0x6e, 0x65, - 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x73, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x27, - 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0x88, 0xc6, 0x2c, 0x01, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, +var File_protoc_gen_gitaly_lint_testdata_invalid_proto protoreflect.FileDescriptor + +var file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDesc = []byte{ + 0x0a, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x69, 0x74, + 0x61, 0x6c, 0x79, 0x2d, 0x6c, 0x69, 0x6e, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, + 0x61, 0x2f, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x04, 0x74, 0x65, 0x73, 0x74, 0x1a, 0x0a, 0x6c, 0x69, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0x16, 0x0a, 0x14, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x5a, 0x0a, 0x1c, 0x49, 0x6e, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, + 0x69, 0x74, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x3a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x80, 0x01, - 0x0a, 0x19, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x53, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x27, 0x0a, 0x0c, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x04, 0x88, 0xc6, 0x2c, 0x01, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, - 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, - 0xc6, 0x2c, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x67, 0x0a, 0x1f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4e, - 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x41, 0x6e, 0x64, 0x52, - 0x65, 0x70, 0x6f, 0x12, 0x44, 0x0a, 0x0d, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x73, - 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x53, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x0c, 0x69, 0x6e, 0x6e, - 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x20, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, - 0x65, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x3d, + 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x38, 0x0a, 0x11, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x54, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0a, 0x77, 0x72, 0x6f, 0x6e, + 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x04, 0x98, 0xc6, + 0x2c, 0x01, 0x52, 0x09, 0x77, 0x72, 0x6f, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x22, 0x17, 0x0a, + 0x15, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54, 0x0a, 0x14, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0d, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, - 0x0c, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, - 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x04, 0x88, 0xc6, 0x2c, 0x01, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x96, 0x01, 0x0a, 0x1d, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x4e, 0x65, 0x73, 0x74, 0x65, - 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x42, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x49, 0x6e, 0x6e, 0x65, 0x72, - 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x1a, 0x31, 0x0a, 0x06, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0x88, 0xc6, - 0x2c, 0x01, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, - 0xb8, 0x01, 0x0a, 0x1e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x57, - 0x72, 0x6f, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x12, 0x49, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x57, 0x69, 0x74, 0x68, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, - 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x1a, 0x4b, 0x0a, - 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x65, - 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x04, 0x90, 0xc6, 0x2c, 0x01, 0x52, 0x0a, - 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0xab, 0x01, 0x0a, 0x1f, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, - 0x52, 0x65, 0x70, 0x6f, 0x4e, 0x6f, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x67, 0x65, 0x64, 0x12, 0x4a, - 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, + 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x73, 0x0a, 0x12, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x12, 0x27, 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0x88, 0xc6, 0x2c, 0x01, 0x52, 0x0b, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x0b, 0x64, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x79, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x80, 0x01, 0x0a, 0x19, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, + 0x68, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x12, + 0x27, 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0x88, 0xc6, 0x2c, 0x01, 0x52, 0x0b, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x67, 0x0a, 0x1f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, + 0x69, 0x74, 0x68, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x41, 0x6e, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x44, 0x0a, 0x0d, 0x69, 0x6e, 0x6e, 0x65, 0x72, + 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, - 0x68, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x4e, 0x6f, 0x74, 0x46, 0x6c, - 0x61, 0x67, 0x67, 0x65, 0x64, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x04, 0x98, 0xc6, - 0x2c, 0x01, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x1a, 0x3c, 0x0a, 0x06, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, - 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x0a, 0x72, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x32, 0x76, 0x0a, 0x1c, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x4f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x50, 0x0a, 0x0d, 0x49, 0x6e, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1a, 0x2e, 0x74, 0x65, 0x73, 0x74, + 0x68, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x52, + 0x0c, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x8a, 0x01, + 0x0a, 0x20, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x70, 0x6c, 0x65, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x12, 0x3d, 0x0a, 0x0d, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x65, 0x73, 0x74, + 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x52, 0x0c, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x27, 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0x88, 0xc6, 0x2c, 0x01, 0x52, 0x0b, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x96, 0x01, 0x0a, 0x1d, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x4e, + 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x42, 0x0a, 0x06, + 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, + 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x49, + 0x6e, 0x6e, 0x65, 0x72, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x1a, 0x31, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0c, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x04, 0x88, 0xc6, 0x2c, 0x01, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x1e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, + 0x69, 0x74, 0x68, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x49, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x1a, 0x4b, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x0a, 0x72, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x04, 0x90, 0xc6, + 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0xab, + 0x01, 0x0a, 0x1f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x65, + 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x4e, 0x6f, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x67, + 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x4e, + 0x6f, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x67, 0x65, 0x64, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x1a, 0x3c, + 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, + 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, + 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x32, 0x76, 0x0a, 0x1c, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x50, 0x0a, 0x0d, + 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1a, 0x2e, + 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, + 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x1a, 0x04, + 0xf0, 0x97, 0x28, 0x01, 0x32, 0xc1, 0x10, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4b, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x30, 0x12, 0x1a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x1a, 0x04, 0xf0, 0x97, 0x28, 0x01, - 0x32, 0xc1, 0x10, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0x4b, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x30, 0x12, 0x1a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x51, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x31, 0x12, 0x1a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, - 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, - 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, - 0x02, 0x08, 0x00, 0x12, 0x51, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x32, 0x12, 0x1a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, - 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x51, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x34, 0x12, 0x1a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, - 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x5b, 0x0a, 0x0e, 0x49, 0x6e, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x35, 0x12, 0x24, 0x2e, 0x74, 0x65, - 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x57, 0x72, - 0x6f, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, - 0x79, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, - 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x5c, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, - 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x36, 0x12, 0x25, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x65, 0x73, 0x74, 0x65, - 0x64, 0x52, 0x65, 0x70, 0x6f, 0x4e, 0x6f, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x67, 0x65, 0x64, 0x1a, - 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, - 0x28, 0x02, 0x08, 0x01, 0x12, 0x4e, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x37, 0x12, 0x17, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x1a, - 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, - 0x28, 0x02, 0x08, 0x01, 0x12, 0x51, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x38, 0x12, 0x1a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x31, 0x12, 0x1a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x5b, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x39, 0x12, 0x22, 0x2e, 0x74, 0x65, 0x73, 0x74, + 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x00, 0x12, 0x51, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x32, 0x12, 0x1a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x1b, 0x2e, - 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0xfa, 0x97, 0x28, 0x04, - 0x08, 0x01, 0x10, 0x02, 0x12, 0x57, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x31, 0x30, 0x12, 0x1f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, - 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x5d, 0x0a, - 0x0f, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x31, 0x31, - 0x12, 0x25, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, - 0x69, 0x74, 0x68, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x41, 0x6e, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, - 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x51, 0x0a, 0x0f, - 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x31, 0x33, 0x12, - 0x17, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x54, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, - 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0xfa, 0x97, 0x28, 0x04, 0x08, 0x01, 0x10, 0x02, 0x12, - 0x60, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x31, 0x34, 0x12, 0x26, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x4e, 0x65, 0x73, - 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, - 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0xfa, 0x97, 0x28, 0x04, 0x08, 0x01, 0x10, - 0x02, 0x12, 0x59, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x31, 0x35, 0x12, 0x1f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x41, 0x6e, - 0x64, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x08, 0x80, 0x98, 0x28, 0x01, 0xfa, 0x97, 0x28, 0x00, 0x12, 0x63, 0x0a, 0x20, - 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x57, 0x69, 0x74, 0x68, 0x4d, - 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x12, 0x1a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, + 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x51, 0x0a, 0x0e, 0x49, 0x6e, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x34, 0x12, 0x1a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, - 0x03, 0x12, 0x70, 0x0a, 0x22, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, - 0x57, 0x69, 0x74, 0x68, 0x55, 0x6e, 0x66, 0x6c, 0x61, 0x67, 0x67, 0x65, 0x64, 0x52, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x25, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, - 0x52, 0x65, 0x70, 0x6f, 0x4e, 0x6f, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x67, 0x65, 0x64, 0x1a, 0x1b, - 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, - 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, - 0x02, 0x08, 0x03, 0x12, 0x75, 0x0a, 0x28, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, - 0x63, 0x65, 0x57, 0x69, 0x74, 0x68, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, - 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, + 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x5b, 0x0a, + 0x0e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x35, 0x12, 0x24, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x03, 0x12, 0x60, 0x0a, 0x20, 0x4d, 0x61, - 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x57, 0x69, 0x74, 0x68, 0x49, 0x6e, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, - 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x54, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, - 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x03, 0x12, 0x66, 0x0a, 0x23, - 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x57, 0x69, 0x74, 0x68, 0x49, - 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, - 0x28, 0x02, 0x08, 0x03, 0x12, 0x6b, 0x0a, 0x23, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, - 0x6e, 0x63, 0x65, 0x57, 0x69, 0x74, 0x68, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x41, 0x6e, - 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1f, 0x2e, 0x74, 0x65, + 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x5c, 0x0a, 0x0e, 0x49, 0x6e, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x36, 0x12, 0x25, 0x2e, 0x74, + 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4e, + 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x4e, 0x6f, 0x74, 0x46, 0x6c, 0x61, 0x67, + 0x67, 0x65, 0x64, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x4e, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x37, 0x12, 0x17, 0x2e, 0x74, 0x65, 0x73, + 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x51, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x38, 0x12, 0x1a, 0x2e, 0x74, 0x65, 0x73, + 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x5b, 0x0a, 0x0e, 0x49, + 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x39, 0x12, 0x22, 0x2e, + 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x70, + 0x6f, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, + 0xfa, 0x97, 0x28, 0x04, 0x08, 0x01, 0x10, 0x02, 0x12, 0x57, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x31, 0x30, 0x12, 0x1f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, - 0x03, 0x12, 0x77, 0x0a, 0x29, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, - 0x57, 0x69, 0x74, 0x68, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x25, - 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, - 0x68, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x41, 0x6e, - 0x64, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x03, 0x12, 0x68, 0x0a, 0x1b, 0x4d, 0x61, - 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x57, 0x69, 0x74, 0x68, 0x53, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x22, 0x2e, 0x74, 0x65, 0x73, 0x74, + 0x02, 0x12, 0x5d, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x31, 0x31, 0x12, 0x25, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x1b, 0x2e, 0x74, 0x65, + 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, + 0x12, 0x51, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x31, 0x33, 0x12, 0x17, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x1b, 0x2e, 0x74, + 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0xfa, 0x97, 0x28, 0x04, 0x08, + 0x01, 0x10, 0x02, 0x12, 0x60, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x31, 0x34, 0x12, 0x26, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, + 0x65, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x1a, 0x1b, + 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0xfa, 0x97, 0x28, + 0x04, 0x08, 0x01, 0x10, 0x02, 0x12, 0x59, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x31, 0x35, 0x12, 0x1f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, + 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0x80, 0x98, 0x28, 0x01, 0xfa, 0x97, 0x28, 0x00, + 0x12, 0x63, 0x0a, 0x20, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x57, + 0x69, 0x74, 0x68, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, + 0x97, 0x28, 0x02, 0x08, 0x03, 0x12, 0x70, 0x0a, 0x22, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, + 0x61, 0x6e, 0x63, 0x65, 0x57, 0x69, 0x74, 0x68, 0x55, 0x6e, 0x66, 0x6c, 0x61, 0x67, 0x67, 0x65, + 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x25, 0x2e, 0x74, 0x65, + 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x65, + 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x4e, 0x6f, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x67, + 0x65, 0x64, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x03, 0x12, 0x75, 0x0a, 0x28, 0x4d, 0x61, 0x69, 0x6e, 0x74, + 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x57, 0x69, 0x74, 0x68, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x4e, + 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x24, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x57, 0x72, 0x6f, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, + 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x03, 0x12, 0x60, + 0x0a, 0x20, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x57, 0x69, 0x74, + 0x68, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x17, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x1b, 0x2e, 0x74, 0x65, + 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x03, + 0x12, 0x66, 0x0a, 0x23, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x57, + 0x69, 0x74, 0x68, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, + 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x03, 0x12, 0x6b, 0x0a, 0x23, 0x4d, 0x61, 0x69, 0x6e, + 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x57, 0x69, 0x74, 0x68, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, + 0x1f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, + 0x74, 0x68, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x70, 0x6f, + 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, + 0x97, 0x28, 0x02, 0x08, 0x03, 0x12, 0x77, 0x0a, 0x29, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, + 0x61, 0x6e, 0x63, 0x65, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x12, 0x25, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x1a, 0x1b, 0x2e, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x03, 0x12, 0x68, + 0x0a, 0x1b, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x57, 0x69, 0x74, + 0x68, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x22, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x4d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0xfa, 0x97, 0x28, 0x04, - 0x08, 0x03, 0x10, 0x02, 0x42, 0x44, 0x5a, 0x42, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2d, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x69, - 0x74, 0x61, 0x6c, 0x79, 0x2f, 0x76, 0x31, 0x34, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, - 0x6f, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x6c, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x6f, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x70, + 0x6f, 0x1a, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, + 0xfa, 0x97, 0x28, 0x04, 0x08, 0x03, 0x10, 0x02, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, 0x74, 0x6c, + 0x61, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2d, 0x6f, 0x72, + 0x67, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2f, 0x76, 0x31, 0x34, 0x2f, 0x74, 0x6f, 0x6f, + 0x6c, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x69, + 0x74, 0x61, 0x6c, 0x79, 0x2d, 0x6c, 0x69, 0x6e, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, + 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( - file_go_internal_linter_testdata_invalid_proto_rawDescOnce sync.Once - file_go_internal_linter_testdata_invalid_proto_rawDescData = file_go_internal_linter_testdata_invalid_proto_rawDesc + file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDescOnce sync.Once + file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDescData = file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDesc ) -func file_go_internal_linter_testdata_invalid_proto_rawDescGZIP() []byte { - file_go_internal_linter_testdata_invalid_proto_rawDescOnce.Do(func() { - file_go_internal_linter_testdata_invalid_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_internal_linter_testdata_invalid_proto_rawDescData) +func file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDescGZIP() []byte { + file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDescOnce.Do(func() { + file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDescData = protoimpl.X.CompressGZIP(file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDescData) }) - return file_go_internal_linter_testdata_invalid_proto_rawDescData + return file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDescData } -var file_go_internal_linter_testdata_invalid_proto_msgTypes = make([]protoimpl.MessageInfo, 15) -var file_go_internal_linter_testdata_invalid_proto_goTypes = []interface{}{ +var file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes = make([]protoimpl.MessageInfo, 15) +var file_protoc_gen_gitaly_lint_testdata_invalid_proto_goTypes = []interface{}{ (*InvalidMethodRequest)(nil), // 0: test.InvalidMethodRequest (*InvalidMethodRequestWithRepo)(nil), // 1: test.InvalidMethodRequestWithRepo (*InvalidTargetType)(nil), // 2: test.InvalidTargetType @@ -999,7 +999,7 @@ var file_go_internal_linter_testdata_invalid_proto_goTypes = []interface{}{ (*RequestWithNestedRepoNotFlagged_Header)(nil), // 14: test.RequestWithNestedRepoNotFlagged.Header (*gitalypb.Repository)(nil), // 15: gitaly.Repository } -var file_go_internal_linter_testdata_invalid_proto_depIdxs = []int32{ +var file_protoc_gen_gitaly_lint_testdata_invalid_proto_depIdxs = []int32{ 15, // 0: test.InvalidMethodRequestWithRepo.destination:type_name -> gitaly.Repository 2, // 1: test.InvalidNestedRequest.inner_message:type_name -> test.InvalidTargetType 15, // 2: test.RequestWithStorage.destination:type_name -> gitaly.Repository @@ -1064,13 +1064,13 @@ var file_go_internal_linter_testdata_invalid_proto_depIdxs = []int32{ 0, // [0:11] is the sub-list for field type_name } -func init() { file_go_internal_linter_testdata_invalid_proto_init() } -func file_go_internal_linter_testdata_invalid_proto_init() { - if File_go_internal_linter_testdata_invalid_proto != nil { +func init() { file_protoc_gen_gitaly_lint_testdata_invalid_proto_init() } +func file_protoc_gen_gitaly_lint_testdata_invalid_proto_init() { + if File_protoc_gen_gitaly_lint_testdata_invalid_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_go_internal_linter_testdata_invalid_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InvalidMethodRequest); i { case 0: return &v.state @@ -1082,7 +1082,7 @@ func file_go_internal_linter_testdata_invalid_proto_init() { return nil } } - file_go_internal_linter_testdata_invalid_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InvalidMethodRequestWithRepo); i { case 0: return &v.state @@ -1094,7 +1094,7 @@ func file_go_internal_linter_testdata_invalid_proto_init() { return nil } } - file_go_internal_linter_testdata_invalid_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InvalidTargetType); i { case 0: return &v.state @@ -1106,7 +1106,7 @@ func file_go_internal_linter_testdata_invalid_proto_init() { return nil } } - file_go_internal_linter_testdata_invalid_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InvalidMethodResponse); i { case 0: return &v.state @@ -1118,7 +1118,7 @@ func file_go_internal_linter_testdata_invalid_proto_init() { return nil } } - file_go_internal_linter_testdata_invalid_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InvalidNestedRequest); i { case 0: return &v.state @@ -1130,7 +1130,7 @@ func file_go_internal_linter_testdata_invalid_proto_init() { return nil } } - file_go_internal_linter_testdata_invalid_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RequestWithStorage); i { case 0: return &v.state @@ -1142,7 +1142,7 @@ func file_go_internal_linter_testdata_invalid_proto_init() { return nil } } - file_go_internal_linter_testdata_invalid_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RequestWithStorageAndRepo); i { case 0: return &v.state @@ -1154,7 +1154,7 @@ func file_go_internal_linter_testdata_invalid_proto_init() { return nil } } - file_go_internal_linter_testdata_invalid_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RequestWithNestedStorageAndRepo); i { case 0: return &v.state @@ -1166,7 +1166,7 @@ func file_go_internal_linter_testdata_invalid_proto_init() { return nil } } - file_go_internal_linter_testdata_invalid_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RequestWithMultipleNestedStorage); i { case 0: return &v.state @@ -1178,7 +1178,7 @@ func file_go_internal_linter_testdata_invalid_proto_init() { return nil } } - file_go_internal_linter_testdata_invalid_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RequestWithInnerNestedStorage); i { case 0: return &v.state @@ -1190,7 +1190,7 @@ func file_go_internal_linter_testdata_invalid_proto_init() { return nil } } - file_go_internal_linter_testdata_invalid_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RequestWithWrongTypeRepository); i { case 0: return &v.state @@ -1202,7 +1202,7 @@ func file_go_internal_linter_testdata_invalid_proto_init() { return nil } } - file_go_internal_linter_testdata_invalid_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RequestWithNestedRepoNotFlagged); i { case 0: return &v.state @@ -1214,7 +1214,7 @@ func file_go_internal_linter_testdata_invalid_proto_init() { return nil } } - file_go_internal_linter_testdata_invalid_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RequestWithInnerNestedStorage_Header); i { case 0: return &v.state @@ -1226,7 +1226,7 @@ func file_go_internal_linter_testdata_invalid_proto_init() { return nil } } - file_go_internal_linter_testdata_invalid_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RequestWithWrongTypeRepository_Header); i { case 0: return &v.state @@ -1238,7 +1238,7 @@ func file_go_internal_linter_testdata_invalid_proto_init() { return nil } } - file_go_internal_linter_testdata_invalid_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RequestWithNestedRepoNotFlagged_Header); i { case 0: return &v.state @@ -1255,18 +1255,18 @@ func file_go_internal_linter_testdata_invalid_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_go_internal_linter_testdata_invalid_proto_rawDesc, + RawDescriptor: file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDesc, NumEnums: 0, NumMessages: 15, NumExtensions: 0, NumServices: 2, }, - GoTypes: file_go_internal_linter_testdata_invalid_proto_goTypes, - DependencyIndexes: file_go_internal_linter_testdata_invalid_proto_depIdxs, - MessageInfos: file_go_internal_linter_testdata_invalid_proto_msgTypes, + GoTypes: file_protoc_gen_gitaly_lint_testdata_invalid_proto_goTypes, + DependencyIndexes: file_protoc_gen_gitaly_lint_testdata_invalid_proto_depIdxs, + MessageInfos: file_protoc_gen_gitaly_lint_testdata_invalid_proto_msgTypes, }.Build() - File_go_internal_linter_testdata_invalid_proto = out.File - file_go_internal_linter_testdata_invalid_proto_rawDesc = nil - file_go_internal_linter_testdata_invalid_proto_goTypes = nil - file_go_internal_linter_testdata_invalid_proto_depIdxs = nil + File_protoc_gen_gitaly_lint_testdata_invalid_proto = out.File + file_protoc_gen_gitaly_lint_testdata_invalid_proto_rawDesc = nil + file_protoc_gen_gitaly_lint_testdata_invalid_proto_goTypes = nil + file_protoc_gen_gitaly_lint_testdata_invalid_proto_depIdxs = nil } diff --git a/proto/go/internal/linter/testdata/invalid.proto b/tools/protoc-gen-gitaly-lint/testdata/invalid.proto index db8b14bf7..80deaa416 100644 --- a/proto/go/internal/linter/testdata/invalid.proto +++ b/tools/protoc-gen-gitaly-lint/testdata/invalid.proto @@ -5,7 +5,7 @@ package test; import "lint.proto"; import "shared.proto"; -option go_package = "gitlab.com/gitlab-org/gitaly/v14/proto/go/internal/linter/testdata"; +option go_package = "gitlab.com/gitlab-org/gitaly/v14/tools/protoc-gen-gitaly-lint/testdata"; message InvalidMethodRequest { } diff --git a/proto/go/internal/linter/testdata/invalid_grpc.pb.go b/tools/protoc-gen-gitaly-lint/testdata/invalid_grpc.pb.go index 02211b2f9..746f85a4c 100644 --- a/proto/go/internal/linter/testdata/invalid_grpc.pb.go +++ b/tools/protoc-gen-gitaly-lint/testdata/invalid_grpc.pb.go @@ -100,7 +100,7 @@ var InterceptedWithOperationType_ServiceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "go/internal/linter/testdata/invalid.proto", + Metadata: "protoc-gen-gitaly-lint/testdata/invalid.proto", } // InvalidServiceClient is the client API for InvalidService service. @@ -970,5 +970,5 @@ var InvalidService_ServiceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "go/internal/linter/testdata/invalid.proto", + Metadata: "protoc-gen-gitaly-lint/testdata/invalid.proto", } diff --git a/proto/go/internal/linter/testdata/valid.pb.go b/tools/protoc-gen-gitaly-lint/testdata/valid.pb.go index 2885e8430..c49093be0 100644 --- a/proto/go/internal/linter/testdata/valid.pb.go +++ b/tools/protoc-gen-gitaly-lint/testdata/valid.pb.go @@ -2,7 +2,7 @@ // versions: // protoc-gen-go v1.26.0 // protoc v3.17.3 -// source: go/internal/linter/testdata/valid.proto +// source: protoc-gen-gitaly-lint/testdata/valid.proto package testdata @@ -32,7 +32,7 @@ type ValidRequest struct { func (x *ValidRequest) Reset() { *x = ValidRequest{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_valid_proto_msgTypes[0] + mi := &file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -45,7 +45,7 @@ func (x *ValidRequest) String() string { func (*ValidRequest) ProtoMessage() {} func (x *ValidRequest) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_valid_proto_msgTypes[0] + mi := &file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -58,7 +58,7 @@ func (x *ValidRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidRequest.ProtoReflect.Descriptor instead. func (*ValidRequest) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_valid_proto_rawDescGZIP(), []int{0} + return file_protoc_gen_gitaly_lint_testdata_valid_proto_rawDescGZIP(), []int{0} } func (x *ValidRequest) GetDestination() *gitalypb.Repository { @@ -77,7 +77,7 @@ type ValidRequestWithoutRepo struct { func (x *ValidRequestWithoutRepo) Reset() { *x = ValidRequestWithoutRepo{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_valid_proto_msgTypes[1] + mi := &file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -90,7 +90,7 @@ func (x *ValidRequestWithoutRepo) String() string { func (*ValidRequestWithoutRepo) ProtoMessage() {} func (x *ValidRequestWithoutRepo) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_valid_proto_msgTypes[1] + mi := &file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -103,7 +103,7 @@ func (x *ValidRequestWithoutRepo) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidRequestWithoutRepo.ProtoReflect.Descriptor instead. func (*ValidRequestWithoutRepo) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_valid_proto_rawDescGZIP(), []int{1} + return file_protoc_gen_gitaly_lint_testdata_valid_proto_rawDescGZIP(), []int{1} } type ValidStorageRequest struct { @@ -117,7 +117,7 @@ type ValidStorageRequest struct { func (x *ValidStorageRequest) Reset() { *x = ValidStorageRequest{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_valid_proto_msgTypes[2] + mi := &file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -130,7 +130,7 @@ func (x *ValidStorageRequest) String() string { func (*ValidStorageRequest) ProtoMessage() {} func (x *ValidStorageRequest) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_valid_proto_msgTypes[2] + mi := &file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -143,7 +143,7 @@ func (x *ValidStorageRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidStorageRequest.ProtoReflect.Descriptor instead. func (*ValidStorageRequest) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_valid_proto_rawDescGZIP(), []int{2} + return file_protoc_gen_gitaly_lint_testdata_valid_proto_rawDescGZIP(), []int{2} } func (x *ValidStorageRequest) GetStorageName() string { @@ -162,7 +162,7 @@ type ValidResponse struct { func (x *ValidResponse) Reset() { *x = ValidResponse{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_valid_proto_msgTypes[3] + mi := &file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -175,7 +175,7 @@ func (x *ValidResponse) String() string { func (*ValidResponse) ProtoMessage() {} func (x *ValidResponse) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_valid_proto_msgTypes[3] + mi := &file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -188,7 +188,7 @@ func (x *ValidResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidResponse.ProtoReflect.Descriptor instead. func (*ValidResponse) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_valid_proto_rawDescGZIP(), []int{3} + return file_protoc_gen_gitaly_lint_testdata_valid_proto_rawDescGZIP(), []int{3} } type ValidNestedRequest struct { @@ -202,7 +202,7 @@ type ValidNestedRequest struct { func (x *ValidNestedRequest) Reset() { *x = ValidNestedRequest{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_valid_proto_msgTypes[4] + mi := &file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -215,7 +215,7 @@ func (x *ValidNestedRequest) String() string { func (*ValidNestedRequest) ProtoMessage() {} func (x *ValidNestedRequest) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_valid_proto_msgTypes[4] + mi := &file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -228,7 +228,7 @@ func (x *ValidNestedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidNestedRequest.ProtoReflect.Descriptor instead. func (*ValidNestedRequest) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_valid_proto_rawDescGZIP(), []int{4} + return file_protoc_gen_gitaly_lint_testdata_valid_proto_rawDescGZIP(), []int{4} } func (x *ValidNestedRequest) GetInnerMessage() *ValidRequest { @@ -249,7 +249,7 @@ type ValidStorageNestedRequest struct { func (x *ValidStorageNestedRequest) Reset() { *x = ValidStorageNestedRequest{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_valid_proto_msgTypes[5] + mi := &file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -262,7 +262,7 @@ func (x *ValidStorageNestedRequest) String() string { func (*ValidStorageNestedRequest) ProtoMessage() {} func (x *ValidStorageNestedRequest) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_valid_proto_msgTypes[5] + mi := &file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -275,7 +275,7 @@ func (x *ValidStorageNestedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidStorageNestedRequest.ProtoReflect.Descriptor instead. func (*ValidStorageNestedRequest) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_valid_proto_rawDescGZIP(), []int{5} + return file_protoc_gen_gitaly_lint_testdata_valid_proto_rawDescGZIP(), []int{5} } func (x *ValidStorageNestedRequest) GetInnerMessage() *ValidStorageRequest { @@ -296,7 +296,7 @@ type ValidNestedSharedRequest struct { func (x *ValidNestedSharedRequest) Reset() { *x = ValidNestedSharedRequest{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_valid_proto_msgTypes[6] + mi := &file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -309,7 +309,7 @@ func (x *ValidNestedSharedRequest) String() string { func (*ValidNestedSharedRequest) ProtoMessage() {} func (x *ValidNestedSharedRequest) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_valid_proto_msgTypes[6] + mi := &file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -322,7 +322,7 @@ func (x *ValidNestedSharedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidNestedSharedRequest.ProtoReflect.Descriptor instead. func (*ValidNestedSharedRequest) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_valid_proto_rawDescGZIP(), []int{6} + return file_protoc_gen_gitaly_lint_testdata_valid_proto_rawDescGZIP(), []int{6} } func (x *ValidNestedSharedRequest) GetNestedTargetRepo() *gitalypb.ObjectPool { @@ -343,7 +343,7 @@ type ValidInnerNestedRequest struct { func (x *ValidInnerNestedRequest) Reset() { *x = ValidInnerNestedRequest{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_valid_proto_msgTypes[7] + mi := &file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -356,7 +356,7 @@ func (x *ValidInnerNestedRequest) String() string { func (*ValidInnerNestedRequest) ProtoMessage() {} func (x *ValidInnerNestedRequest) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_valid_proto_msgTypes[7] + mi := &file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -369,7 +369,7 @@ func (x *ValidInnerNestedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidInnerNestedRequest.ProtoReflect.Descriptor instead. func (*ValidInnerNestedRequest) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_valid_proto_rawDescGZIP(), []int{7} + return file_protoc_gen_gitaly_lint_testdata_valid_proto_rawDescGZIP(), []int{7} } func (x *ValidInnerNestedRequest) GetHeader() *ValidInnerNestedRequest_Header { @@ -390,7 +390,7 @@ type ValidStorageInnerNestedRequest struct { func (x *ValidStorageInnerNestedRequest) Reset() { *x = ValidStorageInnerNestedRequest{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_valid_proto_msgTypes[8] + mi := &file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -403,7 +403,7 @@ func (x *ValidStorageInnerNestedRequest) String() string { func (*ValidStorageInnerNestedRequest) ProtoMessage() {} func (x *ValidStorageInnerNestedRequest) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_valid_proto_msgTypes[8] + mi := &file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -416,7 +416,7 @@ func (x *ValidStorageInnerNestedRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidStorageInnerNestedRequest.ProtoReflect.Descriptor instead. func (*ValidStorageInnerNestedRequest) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_valid_proto_rawDescGZIP(), []int{8} + return file_protoc_gen_gitaly_lint_testdata_valid_proto_rawDescGZIP(), []int{8} } func (x *ValidStorageInnerNestedRequest) GetHeader() *ValidStorageInnerNestedRequest_Header { @@ -437,7 +437,7 @@ type ValidInnerNestedRequest_Header struct { func (x *ValidInnerNestedRequest_Header) Reset() { *x = ValidInnerNestedRequest_Header{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_valid_proto_msgTypes[9] + mi := &file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -450,7 +450,7 @@ func (x *ValidInnerNestedRequest_Header) String() string { func (*ValidInnerNestedRequest_Header) ProtoMessage() {} func (x *ValidInnerNestedRequest_Header) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_valid_proto_msgTypes[9] + mi := &file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -463,7 +463,7 @@ func (x *ValidInnerNestedRequest_Header) ProtoReflect() protoreflect.Message { // Deprecated: Use ValidInnerNestedRequest_Header.ProtoReflect.Descriptor instead. func (*ValidInnerNestedRequest_Header) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_valid_proto_rawDescGZIP(), []int{7, 0} + return file_protoc_gen_gitaly_lint_testdata_valid_proto_rawDescGZIP(), []int{7, 0} } func (x *ValidInnerNestedRequest_Header) GetDestination() *gitalypb.Repository { @@ -484,7 +484,7 @@ type ValidStorageInnerNestedRequest_Header struct { func (x *ValidStorageInnerNestedRequest_Header) Reset() { *x = ValidStorageInnerNestedRequest_Header{} if protoimpl.UnsafeEnabled { - mi := &file_go_internal_linter_testdata_valid_proto_msgTypes[10] + mi := &file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -497,7 +497,7 @@ func (x *ValidStorageInnerNestedRequest_Header) String() string { func (*ValidStorageInnerNestedRequest_Header) ProtoMessage() {} func (x *ValidStorageInnerNestedRequest_Header) ProtoReflect() protoreflect.Message { - mi := &file_go_internal_linter_testdata_valid_proto_msgTypes[10] + mi := &file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -510,7 +510,7 @@ func (x *ValidStorageInnerNestedRequest_Header) ProtoReflect() protoreflect.Mess // Deprecated: Use ValidStorageInnerNestedRequest_Header.ProtoReflect.Descriptor instead. func (*ValidStorageInnerNestedRequest_Header) Descriptor() ([]byte, []int) { - return file_go_internal_linter_testdata_valid_proto_rawDescGZIP(), []int{8, 0} + return file_protoc_gen_gitaly_lint_testdata_valid_proto_rawDescGZIP(), []int{8, 0} } func (x *ValidStorageInnerNestedRequest_Header) GetStorageName() string { @@ -520,157 +520,157 @@ func (x *ValidStorageInnerNestedRequest_Header) GetStorageName() string { return "" } -var File_go_internal_linter_testdata_valid_proto protoreflect.FileDescriptor - -var file_go_internal_linter_testdata_valid_proto_rawDesc = []byte{ - 0x0a, 0x27, 0x67, 0x6f, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x6c, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x74, 0x65, 0x73, 0x74, 0x1a, - 0x0a, 0x6c, 0x69, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0c, 0x73, 0x68, 0x61, - 0x72, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x4a, 0x0a, 0x0c, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x0b, 0x64, 0x65, 0x73, +var File_protoc_gen_gitaly_lint_testdata_valid_proto protoreflect.FileDescriptor + +var file_protoc_gen_gitaly_lint_testdata_valid_proto_rawDesc = []byte{ + 0x0a, 0x2b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x69, 0x74, + 0x61, 0x6c, 0x79, 0x2d, 0x6c, 0x69, 0x6e, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, + 0x61, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x74, + 0x65, 0x73, 0x74, 0x1a, 0x0a, 0x6c, 0x69, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x4a, 0x0a, + 0x0c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3a, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x19, 0x0a, 0x17, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, + 0x52, 0x65, 0x70, 0x6f, 0x22, 0x3e, 0x0a, 0x13, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0c, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x04, 0x88, 0xc6, 0x2c, 0x01, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4d, 0x0a, 0x12, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x4e, 0x65, + 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x0d, 0x69, + 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0c, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x22, 0x5b, 0x0a, 0x19, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x53, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x52, 0x0c, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x22, 0x62, 0x0a, 0x18, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, + 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, + 0x12, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, + 0x65, 0x70, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, + 0x6c, 0x79, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x42, 0x04, 0x98, + 0xc6, 0x2c, 0x01, 0x52, 0x10, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x52, 0x65, 0x70, 0x6f, 0x22, 0x9d, 0x01, 0x0a, 0x17, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x49, + 0x6e, 0x6e, 0x65, 0x72, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x3c, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x49, 0x6e, + 0x6e, 0x65, 0x72, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x1a, + 0x44, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x19, 0x0a, 0x17, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x52, 0x65, 0x70, 0x6f, - 0x22, 0x3e, 0x0a, 0x13, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x98, 0x01, 0x0a, 0x1e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x4e, 0x65, 0x73, 0x74, 0x65, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x6e, 0x65, + 0x72, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x1a, 0x31, 0x0a, + 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0x88, 0xc6, 0x2c, 0x01, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x22, 0x0f, 0x0a, 0x0d, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x4d, 0x0a, 0x12, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x0d, 0x69, 0x6e, 0x6e, 0x65, 0x72, - 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, - 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x52, 0x0c, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x22, 0x5b, 0x0a, 0x19, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, - 0x0d, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, - 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, - 0x0c, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x62, 0x0a, - 0x18, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x68, 0x61, 0x72, - 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x12, 0x6e, 0x65, 0x73, - 0x74, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, - 0x10, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x70, - 0x6f, 0x22, 0x9d, 0x01, 0x0a, 0x17, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, - 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, - 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x4e, - 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x1a, 0x44, 0x0a, 0x06, 0x48, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x3a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, - 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, - 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x98, 0x01, 0x0a, 0x1e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, - 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x4e, 0x65, 0x73, - 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x1a, 0x31, 0x0a, 0x06, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0x88, 0xc6, 0x2c, 0x01, 0x52, - 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x32, 0x51, 0x0a, 0x12, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x12, 0x35, 0x0a, 0x0a, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x12, 0x12, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, - 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x04, 0xf0, 0x97, 0x28, 0x01, 0x32, - 0xc4, 0x08, 0x0a, 0x0c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x3d, 0x0a, 0x0a, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x12, - 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, - 0x3e, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x32, 0x12, 0x12, - 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, - 0x3e, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x33, 0x12, 0x12, - 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, - 0x44, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x35, 0x12, 0x18, - 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, + 0x32, 0x51, 0x0a, 0x12, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x35, 0x0a, 0x0a, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x12, 0x12, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, - 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, - 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x4a, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, - 0x68, 0x6f, 0x64, 0x36, 0x12, 0x1e, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, - 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, - 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, - 0x01, 0x12, 0x49, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x37, - 0x12, 0x1d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x49, 0x6e, 0x6e, - 0x65, 0x72, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x13, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x47, 0x0a, 0x0b, - 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x38, 0x12, 0x19, 0x2e, 0x74, 0x65, - 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x04, 0xf0, + 0x97, 0x28, 0x01, 0x32, 0xc4, 0x08, 0x0a, 0x0c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x12, 0x12, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, - 0x6c, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0xfa, 0x97, 0x28, - 0x04, 0x08, 0x01, 0x10, 0x02, 0x12, 0x4d, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, - 0x68, 0x6f, 0x64, 0x39, 0x12, 0x1f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, - 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, - 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, 0xfa, 0x97, 0x28, 0x04, - 0x08, 0x01, 0x10, 0x02, 0x12, 0x44, 0x0a, 0x0c, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x31, 0x30, 0x12, 0x19, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, - 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x13, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x04, 0x80, 0x98, 0x28, 0x01, 0x12, 0x42, 0x0a, 0x0f, 0x54, 0x65, - 0x73, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x2e, - 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x13, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x03, 0x12, 0x53, - 0x0a, 0x20, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, - 0x65, 0x57, 0x69, 0x74, 0x68, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x53, 0x63, 0x6f, - 0x70, 0x65, 0x12, 0x12, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, + 0x6c, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, + 0x02, 0x08, 0x02, 0x12, 0x3e, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x32, 0x12, 0x12, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, - 0x02, 0x08, 0x03, 0x12, 0x59, 0x0a, 0x20, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x74, - 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, - 0x61, 0x6c, 0x69, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x13, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x03, 0x12, 0x65, - 0x0a, 0x26, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, - 0x65, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, + 0x02, 0x08, 0x01, 0x12, 0x3e, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x33, 0x12, 0x12, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, + 0x02, 0x08, 0x01, 0x12, 0x44, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x35, 0x12, 0x18, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x4e, + 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x74, + 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x4a, 0x0a, 0x0b, 0x54, 0x65, 0x73, + 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x36, 0x12, 0x1e, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, - 0x97, 0x28, 0x02, 0x08, 0x03, 0x12, 0x5f, 0x0a, 0x21, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x75, 0x74, - 0x61, 0x74, 0x6f, 0x72, 0x57, 0x69, 0x74, 0x68, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x4e, 0x65, 0x73, - 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x2e, 0x74, 0x65, 0x73, - 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x4e, 0x65, 0x73, 0x74, + 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x49, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x37, 0x12, 0x1d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, + 0x12, 0x47, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x38, 0x12, + 0x19, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x74, 0x65, 0x73, + 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x08, 0xfa, 0x97, 0x28, 0x04, 0x08, 0x01, 0x10, 0x02, 0x12, 0x4d, 0x0a, 0x0b, 0x54, 0x65, 0x73, + 0x74, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x39, 0x12, 0x1f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x74, 0x65, 0x73, 0x74, - 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, - 0xfa, 0x97, 0x28, 0x02, 0x08, 0x03, 0x42, 0x44, 0x5a, 0x42, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2d, 0x6f, 0x72, 0x67, 0x2f, - 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2f, 0x76, 0x31, 0x34, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2f, 0x67, 0x6f, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x6c, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, + 0xfa, 0x97, 0x28, 0x04, 0x08, 0x01, 0x10, 0x02, 0x12, 0x44, 0x0a, 0x0c, 0x54, 0x65, 0x73, 0x74, + 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x31, 0x30, 0x12, 0x19, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, + 0x56, 0x61, 0x6c, 0x69, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x04, 0x80, 0x98, 0x28, 0x01, 0x12, 0x42, + 0x0a, 0x0f, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, + 0x65, 0x12, 0x12, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, + 0x08, 0x03, 0x12, 0x53, 0x0a, 0x20, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, + 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x57, 0x69, 0x74, 0x68, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, + 0x74, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x12, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x74, 0x65, 0x73, + 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x03, 0x12, 0x59, 0x0a, 0x20, 0x54, 0x65, 0x73, 0x74, 0x4d, + 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x65, + 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x2e, 0x74, 0x65, + 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, + 0x08, 0x03, 0x12, 0x65, 0x0a, 0x26, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, + 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x57, 0x69, 0x74, 0x68, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, + 0x68, 0x61, 0x72, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x2e, 0x74, + 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53, + 0x68, 0x61, 0x72, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x74, + 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x03, 0x12, 0x5f, 0x0a, 0x21, 0x54, 0x65, 0x73, + 0x74, 0x4d, 0x75, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x57, 0x69, 0x74, 0x68, 0x49, 0x6e, 0x6e, 0x65, + 0x72, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, + 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, + 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, + 0x74, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x03, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x69, + 0x74, 0x6c, 0x61, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2d, + 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2f, 0x76, 0x31, 0x34, 0x2f, 0x74, + 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, + 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2d, 0x6c, 0x69, 0x6e, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, + 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( - file_go_internal_linter_testdata_valid_proto_rawDescOnce sync.Once - file_go_internal_linter_testdata_valid_proto_rawDescData = file_go_internal_linter_testdata_valid_proto_rawDesc + file_protoc_gen_gitaly_lint_testdata_valid_proto_rawDescOnce sync.Once + file_protoc_gen_gitaly_lint_testdata_valid_proto_rawDescData = file_protoc_gen_gitaly_lint_testdata_valid_proto_rawDesc ) -func file_go_internal_linter_testdata_valid_proto_rawDescGZIP() []byte { - file_go_internal_linter_testdata_valid_proto_rawDescOnce.Do(func() { - file_go_internal_linter_testdata_valid_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_internal_linter_testdata_valid_proto_rawDescData) +func file_protoc_gen_gitaly_lint_testdata_valid_proto_rawDescGZIP() []byte { + file_protoc_gen_gitaly_lint_testdata_valid_proto_rawDescOnce.Do(func() { + file_protoc_gen_gitaly_lint_testdata_valid_proto_rawDescData = protoimpl.X.CompressGZIP(file_protoc_gen_gitaly_lint_testdata_valid_proto_rawDescData) }) - return file_go_internal_linter_testdata_valid_proto_rawDescData + return file_protoc_gen_gitaly_lint_testdata_valid_proto_rawDescData } -var file_go_internal_linter_testdata_valid_proto_msgTypes = make([]protoimpl.MessageInfo, 11) -var file_go_internal_linter_testdata_valid_proto_goTypes = []interface{}{ +var file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes = make([]protoimpl.MessageInfo, 11) +var file_protoc_gen_gitaly_lint_testdata_valid_proto_goTypes = []interface{}{ (*ValidRequest)(nil), // 0: test.ValidRequest (*ValidRequestWithoutRepo)(nil), // 1: test.ValidRequestWithoutRepo (*ValidStorageRequest)(nil), // 2: test.ValidStorageRequest @@ -685,7 +685,7 @@ var file_go_internal_linter_testdata_valid_proto_goTypes = []interface{}{ (*gitalypb.Repository)(nil), // 11: gitaly.Repository (*gitalypb.ObjectPool)(nil), // 12: gitaly.ObjectPool } -var file_go_internal_linter_testdata_valid_proto_depIdxs = []int32{ +var file_protoc_gen_gitaly_lint_testdata_valid_proto_depIdxs = []int32{ 11, // 0: test.ValidRequest.destination:type_name -> gitaly.Repository 0, // 1: test.ValidNestedRequest.inner_message:type_name -> test.ValidRequest 2, // 2: test.ValidStorageNestedRequest.inner_message:type_name -> test.ValidStorageRequest @@ -730,13 +730,13 @@ var file_go_internal_linter_testdata_valid_proto_depIdxs = []int32{ 0, // [0:7] is the sub-list for field type_name } -func init() { file_go_internal_linter_testdata_valid_proto_init() } -func file_go_internal_linter_testdata_valid_proto_init() { - if File_go_internal_linter_testdata_valid_proto != nil { +func init() { file_protoc_gen_gitaly_lint_testdata_valid_proto_init() } +func file_protoc_gen_gitaly_lint_testdata_valid_proto_init() { + if File_protoc_gen_gitaly_lint_testdata_valid_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_go_internal_linter_testdata_valid_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ValidRequest); i { case 0: return &v.state @@ -748,7 +748,7 @@ func file_go_internal_linter_testdata_valid_proto_init() { return nil } } - file_go_internal_linter_testdata_valid_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ValidRequestWithoutRepo); i { case 0: return &v.state @@ -760,7 +760,7 @@ func file_go_internal_linter_testdata_valid_proto_init() { return nil } } - file_go_internal_linter_testdata_valid_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ValidStorageRequest); i { case 0: return &v.state @@ -772,7 +772,7 @@ func file_go_internal_linter_testdata_valid_proto_init() { return nil } } - file_go_internal_linter_testdata_valid_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ValidResponse); i { case 0: return &v.state @@ -784,7 +784,7 @@ func file_go_internal_linter_testdata_valid_proto_init() { return nil } } - file_go_internal_linter_testdata_valid_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ValidNestedRequest); i { case 0: return &v.state @@ -796,7 +796,7 @@ func file_go_internal_linter_testdata_valid_proto_init() { return nil } } - file_go_internal_linter_testdata_valid_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ValidStorageNestedRequest); i { case 0: return &v.state @@ -808,7 +808,7 @@ func file_go_internal_linter_testdata_valid_proto_init() { return nil } } - file_go_internal_linter_testdata_valid_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ValidNestedSharedRequest); i { case 0: return &v.state @@ -820,7 +820,7 @@ func file_go_internal_linter_testdata_valid_proto_init() { return nil } } - file_go_internal_linter_testdata_valid_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ValidInnerNestedRequest); i { case 0: return &v.state @@ -832,7 +832,7 @@ func file_go_internal_linter_testdata_valid_proto_init() { return nil } } - file_go_internal_linter_testdata_valid_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ValidStorageInnerNestedRequest); i { case 0: return &v.state @@ -844,7 +844,7 @@ func file_go_internal_linter_testdata_valid_proto_init() { return nil } } - file_go_internal_linter_testdata_valid_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ValidInnerNestedRequest_Header); i { case 0: return &v.state @@ -856,7 +856,7 @@ func file_go_internal_linter_testdata_valid_proto_init() { return nil } } - file_go_internal_linter_testdata_valid_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ValidStorageInnerNestedRequest_Header); i { case 0: return &v.state @@ -873,18 +873,18 @@ func file_go_internal_linter_testdata_valid_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_go_internal_linter_testdata_valid_proto_rawDesc, + RawDescriptor: file_protoc_gen_gitaly_lint_testdata_valid_proto_rawDesc, NumEnums: 0, NumMessages: 11, NumExtensions: 0, NumServices: 2, }, - GoTypes: file_go_internal_linter_testdata_valid_proto_goTypes, - DependencyIndexes: file_go_internal_linter_testdata_valid_proto_depIdxs, - MessageInfos: file_go_internal_linter_testdata_valid_proto_msgTypes, + GoTypes: file_protoc_gen_gitaly_lint_testdata_valid_proto_goTypes, + DependencyIndexes: file_protoc_gen_gitaly_lint_testdata_valid_proto_depIdxs, + MessageInfos: file_protoc_gen_gitaly_lint_testdata_valid_proto_msgTypes, }.Build() - File_go_internal_linter_testdata_valid_proto = out.File - file_go_internal_linter_testdata_valid_proto_rawDesc = nil - file_go_internal_linter_testdata_valid_proto_goTypes = nil - file_go_internal_linter_testdata_valid_proto_depIdxs = nil + File_protoc_gen_gitaly_lint_testdata_valid_proto = out.File + file_protoc_gen_gitaly_lint_testdata_valid_proto_rawDesc = nil + file_protoc_gen_gitaly_lint_testdata_valid_proto_goTypes = nil + file_protoc_gen_gitaly_lint_testdata_valid_proto_depIdxs = nil } diff --git a/proto/go/internal/linter/testdata/valid.proto b/tools/protoc-gen-gitaly-lint/testdata/valid.proto index b7821c0a3..e9763b067 100644 --- a/proto/go/internal/linter/testdata/valid.proto +++ b/tools/protoc-gen-gitaly-lint/testdata/valid.proto @@ -5,7 +5,7 @@ package test; import "lint.proto"; import "shared.proto"; -option go_package = "gitlab.com/gitlab-org/gitaly/v14/proto/go/internal/linter/testdata"; +option go_package = "gitlab.com/gitlab-org/gitaly/v14/tools/protoc-gen-gitaly-lint/testdata"; message ValidRequest { gitaly.Repository destination = 1 [(gitaly.target_repository)=true]; diff --git a/proto/go/internal/linter/testdata/valid_grpc.pb.go b/tools/protoc-gen-gitaly-lint/testdata/valid_grpc.pb.go index c9d929b1f..be6f3206b 100644 --- a/proto/go/internal/linter/testdata/valid_grpc.pb.go +++ b/tools/protoc-gen-gitaly-lint/testdata/valid_grpc.pb.go @@ -97,7 +97,7 @@ var InterceptedService_ServiceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "go/internal/linter/testdata/valid.proto", + Metadata: "protoc-gen-gitaly-lint/testdata/valid.proto", } // ValidServiceClient is the client API for ValidService service. @@ -653,5 +653,5 @@ var ValidService_ServiceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "go/internal/linter/testdata/valid.proto", + Metadata: "protoc-gen-gitaly-lint/testdata/valid.proto", } diff --git a/proto/go/internal/cmd/protoc-gen-gitaly/main.go b/tools/protoc-gen-gitaly-protolist/main.go index efe8a312e..7e775360e 100644 --- a/proto/go/internal/cmd/protoc-gen-gitaly/main.go +++ b/tools/protoc-gen-gitaly-protolist/main.go @@ -1,53 +1,12 @@ -/*Command protoc-gen-gitaly is designed to be used as a protobuf compiler -plugin to verify Gitaly processes are being followed when writing RPC's. - -Usage - -The protoc-gen-gitaly linter can be chained into any protoc workflow that -requires verification that Gitaly RPC guidelines are followed. Typically -this can be done by adding the following argument to an existing protoc -command: - - --gitaly_out=. - -For example, you may add the linter as an argument to the command responsible -for generating Go code: - - protoc --go_out=. --gitaly_out=. *.proto - -Or, you can run the Gitaly linter by itself. To try out, run the following -command while in the project root: - - protoc --gitaly_out=. ./go/internal/linter/testdata/incomplete.proto - -You should see some errors printed to screen for improperly written -RPC's in the incomplete.proto file. - -Prerequisites - -The protobuf compiler (protoc) can be obtained from the GitHub page: -https://github.com/protocolbuffers/protobuf/releases - -Background - -The protobuf compiler accepts plugins to analyze protobuf files and generate -language specific code. - -These plugins require the following executable naming convention: - - protoc-gen-$NAME - -Where $NAME is the plugin name of the compiler desired. The protobuf compiler -will search the PATH until an executable with that name is found for a -desired plugin. For example, the following protoc command: - - protoc --gitaly_out=. *.proto - -The above will search the PATH for an executable named protoc-gen-gitaly - -The plugin accepts a protobuf message in STDIN that describes the parsed -protobuf files. A response is sent back on STDOUT that contains any errors. -*/ +// Command protoc-gen-gitaly-protolist is designed to be used as a protobuf compiler to generate a +// list of protobuf files via a publicly accessible variable. +// +// This plugin can be accessed by invoking the protoc compiler with the following arguments: +// +// protoc --plugin=protoc-gen-gitaly-protolist --gitaly_protolist_out=. +// +// The plugin accepts a protobuf message in STDIN that describes the parsed protobuf files. A +// response is sent back on STDOUT that contains any errors. package main import ( @@ -61,7 +20,6 @@ import ( "strings" "text/template" - "gitlab.com/gitlab-org/gitaly/v14/proto/go/internal/linter" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/pluginpb" ) @@ -83,10 +41,6 @@ func main() { log.Fatalf("parsing input proto: %s", err) } - if err := lintProtos(req); err != nil { - log.Fatal(err) - } - if err := generateProtolistGo(req); err != nil { log.Fatal(err) } @@ -109,35 +63,6 @@ func parseArgs(argString string) (gitalyProtoDir string, gitalypbDir string) { return gitalyProtoDir, gitalypbDir } -func lintProtos(req *pluginpb.CodeGeneratorRequest) error { - var errMsgs []string - for _, pf := range req.GetProtoFile() { - errs := linter.LintFile(pf, req) - for _, err := range errs { - errMsgs = append(errMsgs, err.Error()) - } - } - - resp := &pluginpb.CodeGeneratorResponse{} - - if len(errMsgs) > 0 { - errMsg := strings.Join(errMsgs, "\n\t") - resp.Error = &errMsg - } - - // Send back the results. - data, err := proto.Marshal(resp) - if err != nil { - return fmt.Errorf("failed to marshal output proto: %s", err) - } - - _, err = os.Stdout.Write(data) - if err != nil { - return fmt.Errorf("failed to write output proto: %s", err) - } - return nil -} - func generateProtolistGo(req *pluginpb.CodeGeneratorRequest) error { var err error gitalyProtoDir, gitalypbDir := parseArgs(req.GetParameter()) |